2013-02-27 60 views
1

正确显示此FLT条形图和FLOT文档迄今尚未能够帮助我,我有点麻烦。我将首先提供上下文,然后解释我的问题是什么:使用php脚本中的数据显示Flot条形图

  • 下面是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); 
    
  • 以下在我的HTML的JS:

<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"]] 

观念:

  • 我想正确显示日期在x轴
  • 我想在y轴显示以下

  • 实施例NB的最大值: enter image description here

  • 我在此条形图的代码上基于我的代码,但显然结果并不相同。

如果任何人都可以分享一些可能帮助我更好地理解并可能确定问题的信息,因为我不确定问题是来自php操纵数据的方式,还是条形图配置。

谢谢 sSmacKk

+0

您使用的是哪种版本的Flot? – DNS 2013-02-27 12:33:51

+0

我正在使用flot_07 :) – sSmacKk 2013-02-27 12:46:33

回答

2

而是提供点阵列的,使用一系列对象的数组,像这样:

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

请参阅该文档的Data Format部分,几个段落下。

您还需要确保您的时间戳和值是整数,而不是字符串,因为它们看起来像在您的示例中。最后,你的时间戳必须是JavaScript(UNIX * 1000)时间戳;你只是'日期'的尝试绝对不会奏效。