2013-09-27 64 views
1

TL; DR:有很多點,dataGrouping已打開,如何更新單個點?HighCharts:分組數據時更新點

我試圖製作顯示「每分鐘」平均值的HighCharts/HighStock圖表。我通過加載一堆表示「計數」的數據來做到這一點,並且每分鐘都有一條記錄。然後,根據我有多少圖表數據,我使用HighCharts dataGrouping和average近似方法對所有數據進行分組。

這裏是踢球,我想最近分鐘其當前計數更新每個。然後,當我們進入下一分鐘時,添加一個點並繼續。通常,我會做這樣的事情要做到這一點:

chart.series[0].data[99].update(newVal) 

的問題是,data是由設計的空當dataGrouping上。我可以在series.points中看到一些點對象,但更新它們似乎沒有達到我的目的。我還可以在series.options.data上訪問和更新原始數據,但在那裏更新它似乎沒有更新圖表。

Here is a basic fiddle顯示問題。我在那裏有大約30分鐘的隨機連續數據,並且我強迫它在5分鐘的窗口中進行分組。當我按下該按鈕時,任何人都可以更新個人點在我的答案旁邊獲得我的感謝和閃亮的綠色複選標記。

回答

1

http://jsfiddle.net/kZRCa/2/

$('#button').click(function() { 
    var chart = $('#container').highcharts(); 
    var series = chart.get("S1"); 
    var _data = series.options.data; 
    // try and make a point (ANY POINT) update 
    _data[10][1] = 200; 
    series.setData(_data); 
}); 

編輯:忘了提,我也給了該系列的ID,因此它get()更容易了。

+0

我很擔心每次重置整個數據集的性能,但我只是試了一下我的實際數據,它看起來工作得很好。我會讓它運行一段時間,也許會在那裏拋出一些尖峯,但它看起來像這樣工作! –

+0

我一直在使用大型數據集運行多個系列的Highstock圖表數月。我每隔15秒獲取一次新數據,將其添加到我的內部存儲中,然後使用setData()重做圖表數據。它似乎處理得很好。但每個應用程序都有自己的問題。希望這可以爲你解決。 –

+0

是的,它看起來挺好,它也不會像通常的重新渲染那樣殺死圖表的其他部分(也就是滾動,縮放,其他所有內容都會被保留)。再次感謝您的幫助 –