2013-02-27 3 views
1

У меня проблемы с отображением этого флота. Гистограмма и документация на флот мне пока не помогли. Я первый обеспечит контекст, а затем объяснить, что мои вопросы:Отображение флота Гистограмма с данными из php-скрипта

  • Ниже PHP скрипт, который предоставляет данные (я только при условии, что основные строки кода):

    $sql = "select unix_timestamp(date(Date_Found))*1000 as day, count(Virus_Name) as nb from machine_virus_info where Virus_name!='NULL' group by unix_timestamp(date(Date_Found))*1000;"; 
    $result = mysql_query($sql); 
    
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC))    
    { 
         $array[] = array ($row['day'], $row['nb']); 
    
    
         #when echoed the array data looks like this using just date date(): 
         #[["20130226000","2"],["20130227000","1"]] 
    } 
    
    echo json_encode($array); 
    
  • Ниже является JS в моем HTML:

<script id="virus_scan" language="javascript" type="text/javascript"> 
$(function() 
    { 
     var options = { 
      series: 
      { 
       lines: { show: false }, 
       points: { show: false }, 
       bars: 
       { 
        show: true, 
        lineWidth: 1, 
        fill: 1, 
        fillColor: null, 
        align: "left", 
        barWidth: 24 * 60 * 60 * 1000, 
        horizontal: false 
       } 
      }, 
      xaxis: { mode: "time" ,timeformat: "%y/%m/%d" }, 
      legend: { position:"nw" } 
     }; 

     $.getJSON("php_scripts/virus_scan.php", 
      function(data) 
       { 
        $.plot($("#virus_scan"),data,options); 
       } 
      ); 
    } 
); 
</script> 
  • Учитывая информация выше, это гистограмма, что я получаю, используя UNIX_TIMESTAMP (дата()): NOTE: notice the time that is off. this is using unix_timestamp(date())

ПРИМЕЧАНИЕ: Когда мы эхо json_encode ($ массив) при использовании UNIX_TIMESTAMP (дата (дата)) массив печатается следующим образом:

[["1361833200000","2"],["1361919600000","1"]] 
  • Это гистограмма, что я получаю при использовании только даты() вместо UNIX_TIMESTAMP (дата()): using only date()

ПРИМЕЧАНИЕ: Когда мы эхо json_encode ($ массив), используя только дату (даты) массив печатается следующим образом:

[["20130226000","2"],["20130227000","1"]] 

Идея:

  • Я хотел бы, чтобы правильно отобразить дата на оси х
  • я хотел бы на оси у, чтобы отобразить максимальное значение пь

  • Пример ниже: enter image description here

  • Я основывал свой код на коде этой гистограммы, но, очевидно, результаты не совпадают.

Если кто-нибудь может поделиться светом с чем-либо, что может помочь мне лучше понять и, возможно, определить проблему, потому что я не уверен, что проблема связана с тем, как php манипулирует данными или если это гистограмма конфигурации.

Спасибо, sSmacKk

+0

Какую версию флота вы используете? – DNS

+0

Я использую flot_07 :) – sSmacKk

ответ

2

Вместо того чтобы обеспечить множество точек, использовать массив объектов серии, как это:

[{ 
    data: [[timestamp, value], ...] 
    label: "A" 
}, { 
    data: [[timestamp, value], ...] 
    label: "B" 
] 

Смотрите Data Format секцию документации, пару абзацев вниз.

Вам также необходимо убедиться, что ваши метки и значения являются целыми числами, а не строками, как они выглядят в ваших примерах.

И, наконец, ваши метки времени должны быть метками JavaScript (UNIX * 1000); ваши попытки с «датой» определенно не сработают.

Смежные вопросы