我試圖用Highcharts在現有的熱圖實例上添加新的數據行。熱圖:追加新的數據行
對我有添加新行到熱圖的方法有兩種:在底部
1:
由於
- 頂部
- 如何設計Highchart熱圖數據結構(參見documentation),來自我的後端的不同數據點需要t o在
point.y
屬性中遞增,因爲具有最高y軸值的點位於頂部,這是我們想要放置它的位置。這種方法效果很好在我的情況,所以我的僞代碼的樣子,當我從第二,第三......時間服務器獲取新的數據:這是工作
fetchData(loadIndex) .success(function (newData) { var numberOfDataRows = newData.z.length; var newHighChartData = makeHighchartData(newData); var cats = [].concat(chart.yAxis[0].categories); newData.y.forEach(function (newCat) { cats.push(newCat); // Add new categories at the top the chart aka. end of the array }); chart.update({ chart: { height: 600 + numberOfDataRows * loadIndex * 30 // Update chart height }, yAxis: { categories: cats } }, false); // Add new data points newHighChartData.forEach(function (point) { var pointObj = { x: point[0], y: numberOfDataRows * loadIndex + point[1], // add new entry at the top value: point[2] }; chart.series[0].addPoint(pointObj, false, false); }); // Redraw the chart… finally… chart.redraw(); // Increment load index loadIndex++; });
,但我不確定這是否是將新數據附加到熱圖的最佳方式。
2:
它變得有點複雜恕我直言,當我們想在圖表的新數據行添加到結束(又名至底部)。
然後據我發現我們需要更新現有數據的
y
性質,因爲它們必須被轉移到頂部,因此,我們需要分配較大的屬性值。我得到了它幾乎使用Highcharts
chart.series[0].setData(newData, false, true, true)
工作,我更新與newData
(參見最後一個參數updatePoints
,我設置爲true)和更新的y
性質的現有數據。我的版本有點不錯,except for the second reload it omits/hides the initally loaded data and I don't know why yet。但不管怎麼說......我問自己,這是否是一種思維的預期方式和做什麼呢?我想念什麼?一些輔助方法?
有人可以幫助我,無論我的想法是否正確,也許有人可以指點我一些有價值的例子,其中數據被附加到熱圖。我還沒有找到一個,也沒有在一般的Highcharts文檔站點上。
您的第一種方法非常好。對於第二個問題,請創建一個實例(jsfiddle/plunkr/etc)。如果我必須操作圖表中的數據,我會在圖表中使用數據副本,並在不使用Highcharts的情況下操作原始數據。然後我用serial.setData()方法設置新數據。 – morganfree
@morganfree Thx您的評論。我更新了我的帖子,並鏈接到了我創建的highchart github問題。我用'setData'方法完全一樣,但它有一些奇怪的行爲,我不明白。也許這是一個錯誤,也許它是實現本身。 – andi1984