2015-06-01 103 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陣列的陣列。