2015-06-01 105 views
2

我请求一些帮助,因为我找不到另一个线程来解决我的问题。我正在使用HighCharts渲染一个具有温度和湿度值的图表,保存在本地数据库中。每个值都带有其类型(temphumi),进行测量的传感器,知道何时进行测量的datetime以及用于计算实际温度和humi值的系数ID。 我想渲染一个图表,其中每个系列都是传感器,传感器上保存了两种类型的值。 我可以有多达24个传感器,24名临时工和24个humis与数据库中同一日期时间Highcharts与数据库的多个系列

首先,我不知道我是否可以做一些对象的定义直接在HighCharts使用它们,所以现在,我有很多数组。 我不明白该系列选项的工作方式,有很多东西,我迷路了。我刚刚从C++转换到JS和PHP,所以很难为我改变我的习惯^^

不能在这里上传我的表,但如果这是不可能的,才使我能够承载它here

一个图表,我可以做两个图表:一个温度在一个湿度下完成(如同一个标签?)。

谢谢:)


编辑:这里是我的JSON测试图表:

{ “类型”: “温度”, “腐殖”, “温度”, “HUMI”, “临时”, “HUMI”, “临时”, “HUMI”], “capteur”:[ “1”, “1”, “3”, “3”, “1”, “1”, “3”, “3”], “日期”:[ “1432654910”, “1432654910”, “1432654910”, “1432654910”, “1432742599”, “1432742599”, “1432742599”, “1432742599”], “valeur” :[ “6626”, “1220”, “6357”, “1168”, “6782”, “1118”, “6329”, “994”], “_系数”:[ “0”, “0”,“0 “,”0“,”0“,”0“,”0“,”0“]}

这里我JS函数将JSON转换成数组,我需要:

功能arrangeData(数据):

var result = { 
     "temp" : { 
      "capteur" : [[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []], "date" : [] 
     }, 
     "humi" : { 
      "capteur" : [[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []], "date" : [] 
     } 
    }; 
    for(var i in data.type){ 
     if(data.type[i].localeCompare("temp") == 0){ 
      result.temp.capteur[data.capteur[i] - 1].push(data.valeur[i]); 
      if(result.temp.date.length != 0){ 
       if(result.temp.date[result.temp.date.length - 1].getTime() != data.date[i] * 1000) 
        result.temp.date.push(new Date(data.date[i] * 1000)); 
      } 
      else 
       result.temp.date.push(new Date(data.date[i] * 1000)); 
     } 
     else{ 
      result.humi.capteur[data.capteur[i] - 1].push(data.valeur[i]); 
      if(result.humi.date.length != 0){ 
       if(result.humi.date[result.humi.date.length - 1].getTime() != data.date[i] * 1000) 
        result.humi.date.push(new Date(data.date[i] * 1000)); 
      } 
      else 
       result.humi.date.push(new Date(data.date[i] * 1000)); 
     } 
    } 
    console.log(result); 
    return result; 

而且我通过了 “结果” 来setChart这样的:

setChart( chart_temp,name,data.temp.date,data.temp.capteur);

+0

最简单的方法是准备任何从数据库获取数据并形成JSON(通过json_encode()函数)的脚本(如php)。然后在JavaScript中,您可以使用url调用$ .getJSON()到您的php并将数据分配给图表。 –

+0

好的,我会这样做,但我如何安排我的json与HighCharts一起使用? 1)like [[1,2,3 ... 24] [2015-06-02,2015-06-02 ...] [6023,6101 ...] ...]?或 2)like [[1,2015-06-02,6023 ...] [2,2015-06-02,6101] ...]? –

+0

对于每个点,它应该是[x,y]这样的数组,其中x是时间戳(以毫秒为单位的时间),y是数值。 –

回答

0

感谢Sebastian Bochan,我现在可以使用HighCharts和从输出JSON数据的PHP文件下载的数据。

我要解析以阵列JSON数据,以这种方式: data:{ temp:{ [datetime, value], ...}, humi:{ [datetime, value], ...}};x轴是日期时间,并且y轴是通过我的传感器报告的值。

在图表,我在for环,其中chart是欲设定图表做chart.addSeries({name: name[i], data: data[i]});name是名称的每一系列的阵列和data[datetime, value]temphumi阵列的阵列。