在一个样条图表中显示两个(或更多)?

时间:2013-10-28 14:30:28

标签: javascript php mysql charts highcharts

我是Highcharts的新手,基本上是在开发和编码......我现在花了大约一个星期的时间来调整我在网络上找到的一些例子,制作一个标准图表,在一个显示两个系列的数据样条图。

我设法修改我在网上找到的样本,使我的图表与一个系列一起工作,但是当我尝试绘制第二个系列时,它不起作用......最后,我没有理解方式它很有用......我很确定这不是那么困难,因为我的图表非常基本,但我真的不知道怎么做!

让我们从我的情况开始......

  1. 我做了一个名为“data3.php”的文件,它连接到一个mysql数据库并返回3列数据:日期,然后是2个不同的温度(我要显示)。基本上,data3.php似乎正确地工作 结果似乎是正确的(你可以在这里查看:http://www.airone.ch/etienne/graph/high/data3.php) 它按以下格式返回当天的所有数据,每10分钟:

    2013年10月28日星期一00:00:00 14.0 32.7

  2. 这是我生成data3.php finle的代码:

    <?php
    
    $con = mysql_connect("localhost","username","password");
    
    
    if (!$con) {
      die('Could not connect: ' . mysql_error());
    }
    
    mysql_select_db("database", $con);
    $result = mysql_query("SELECT *
    FROM pouleto
    WHERE (
    date( id ) = curdate( )
    )
    AND extract(
    MINUTE FROM `id` )
    IN ( 0, 10,20, 30, 40, 50 );");
    
    
    while($row = mysql_fetch_array($result)) {
    $uts=strtotime($row['id']); //convertir a Unix Timestamp
      $date=date("l, F j, Y H:i:s",$uts);
      //  echo $valor3 . "\t" . $row['Temperature sensor 1']. "\n";
    echo $date . "\t" . $row['Temperature sensor 1']. "\t" . $row['Temperature sensor 3']. "\n";
    
    }
    
    
    /*
     while($row = mysql_fetch_array($result)) {
       echo $row['id'] . "\t" . $row['Temperature sensor 1']. "\n";
    }
    */
    mysql_close($con);
    
    ?>
    

    让我们假设这部分工作正确,因为返回的数据是我需要在图表中绘制的...

    1. 我现在有一个名为“index2.php”的文件,用于显示图表(此处可见:http://www.airone.ch/etienne/graph/high/index2.php)。我设法修改了我发现的代码,使其与“data3.php”一起工作,但我的问题是它只显示第一个温度而不是第二个温度。在其他owrds中,我如何修改我的index2.php以使其绘制两条线,或者基本上更多(我计划绘制多达6种不同的温度)??? 这是我的index2.php代码:

         

      在PHP和MySQL中使用Highcharts

          var chart;             $(document).ready(function(){                 var options = {                     图表:{                         renderTo:'容器',                         defaultSeriesType:'spline',                         marginRight:130,                         marginBottom:25                     },                     标题:{                         文字:'温度du capteur',                         x:-20 //中心                     },                     副标题:{                         文字:'',                         x:-20                     },                     xAxis:{                         输入:'datetime',                         tickInterval:3600 * 1000,//一小时                         tickWidth:0,                         gridLineWidth:1,                         标签: {                             居中对齐',                             x:-3,                             y:20,                             formatter:function(){                                 返回Highcharts.dateFormat('%H',this.value);                             }                         }                     },                     yAxis:{                         标题:{                             文字:'Degres'                         },
                      },
                      tooltip: {
                          formatter: function() {
                            return Highcharts.dateFormat('%H:%M', this.x-(1000*3600)) +' - <b>'+ this.y + ' degres</b>';
                          }
                      },
                      legend: {
                          layout: 'vertical',
                          align: 'right',
                          verticalAlign: 'top',
                          x: -10,
                          y: 100,
                          borderWidth: 0
                      },
                      series: [{
                          name: 'Degres',
                      shadow : true,
                  tooltip : {
                               valueDecimals : 2}
                      }]
                  }
                  // Load data asynchronously using jQuery. On success, add the data
                  // to the options and initiate the chart.
                  // This data is obtained by exporting a GA custom report to TSV.
                  // http://api.jquery.com/jQuery.get/
                  jQuery.get('data3.php', null, function(tsv) {
                      var lines = [];
                      traffic = [];
                      try {
                          // split the data return into lines and parse them
                          tsv = tsv.split(/\n/g);
                          jQuery.each(tsv, function(i, line) {
                              line = line.split(/\t/);
                              date = Date.parse(line[0] +' UTC');
                              traffic.push([
                                  date,
                                  parseInt(line[1].replace(',', ''), 10)
                              ]);
                          });
                      } catch (e) {  }
                      options.series[0].data = traffic;
                      chart = new Highcharts.Chart(options);
                  });
              });
      

    2. 所以现在......有人可以帮助我让我的图表与更多的一个系列一起工作吗?

      在此先感谢,我说我在所有这些方面都有点失落......

      关于阅读所有内容的问候和勇敢:-)

1 个答案:

答案 0 :(得分:0)

添加第二行:

series: [{
  name: 'Degres',
  shadow: true,
  tooltip: {
      valueDecimals: 2
  }
}, {
  name: 'Second value',
  shadow: true,
  tooltip: {
      valueDecimals: 2
  }
}]

然后定义更多系列数据:

var lines = [],
    traffic = [], 
    secondSeries = [];

添加积分:

traffic.push([
  date,
  parseInt(line[1].replace(',', ''), 10)
]);
secondSeries.push([
  date,
  parseInt(line[2].replace(',', ''), 10)
]);

最后,向选项添加数据:

options.series[0].data = traffic;
options.series[1].data = secondSeries;