2013-02-25 29 views
2

我正在使用Highchart繪製兩個yAxes和一個單獨的datetime xAxis的多個系列(約20個)。數據通過提供JSON答案的PHP腳本動態加載。到現在爲止還挺好。我的問題是,爲了通過Highchart兼容,我必須通過網絡發送每個系列的日期時間信息(當然,我可以在接收到日期時間信息一次後更改JS中的JSON數據,但這是也很麻煩)。 500個數據點乘以20個系列時間13個字節,每個刷新的時間戳= 130KB流量,其中1/20就足夠了。HighChart中具有相同xAxis數據的幾個系列

我的問題是:是否有可能將「系列」(日期時間)信息傳遞給xAxis,然後將yAxes系列按發生順序分配給xAxis值?即我通過:

[1361796390000,1361796400000,1361796410000]到x軸,和 [1,2,3]到Y軸

和Highchart分配1至1361796390000,2至1361796400000等等?

感謝您的回答。

回答

1

實際上您並不需要爲系列中的每個數據點傳遞日期時間。你只需要通過系列的開始日期時間,然後用pointStart讓圖表知道什麼時候開始計數,像這樣:http://jsfiddle.net/Reality_Extractor/pNFYL/

pointStart預計Unix time雖然有:

series: [{ 
    name: 'Wind Speed', 
    data: [0.52, 0.778, 0.746, 0.594, 0.716, 0.793, 0.648, 0.828, 0.202, 0.066, 0.116, 0.116, 0.17, 0.195, 0.051, 0, 0.368, 2.365, 2.841, 2.693, 2.416, 2.541, 2.429, 2.888], 
    pointStart: 1360893600000, 
    pointInterval: 3600000 
}] 

在見行動有很多不同的方法,你可以很容易地想出你需要的特定時間。爲了演示目的,我只是在示例中對其進行了硬編碼。

當您使用pointStart時,pointInterval是精確分配時間到數據點所必需的。值得注意的是,這隻適用於具有常規pointIntervals的數據。如果你有不規則的數據,你需要爲每個數據點提供一個日期時間。

這並不完全回答你將數組作爲一個數組傳遞給xAxis的問題,但我相信pointStart方法不如數組賦值複雜。

還有一點相關,這取決於數據更新的頻率應該緩存在服務器上,還有客戶端,以防止數據實際上沒有變化時通過網絡進行不必要的刷新。

+1

非常感謝你的回覆,這回答我的問題。問題是,我通常有點時間間隔(每10秒)。但是,可能會每隔一段時間發生一次數據集不可用。我仍然可以將這些缺失值作爲NULL值傳遞給HighCharts - 這就是我會嘗試的。 – user1055421 2013-02-25 12:34:07

相關問題