[英]How do you create a Hight Charts chart that updates every second with real data?
有沒有一種方法來創建一個圖表,每秒更新,像這樣真實的數據一個 ? 我不知道。 我基本上想要一個圖表,該圖表每秒更新一次過去的數據。 我用我的數據更新了一個小提琴 ,但無法正常工作。
我在網上找到的每個示例都處理隨機數據,但是我不知道該如何使用數據而不是隨機數據。
我知道這與這段代碼有關:
events: {
load: function() {
// set up the updating of the chart each second
var series = this.series[0];
setInterval(function() {
var x = (new Date()).getTime(), // current time
y = Math.random();
series.addPoint([x, y], true, true);
}, 1000);
}
}
在這里查看我為您所做的更改: http : //jsfiddle.net/KXpF7/3/
首先,您的數據格式是錯誤的,因為它只是一維的,不能用於表示(x,y)
data: [[3,11,0,3,4,40,2,11,1,5,40,12,11,40,1,40,12,2,3,2,1,12,1,0,1,15,1,4,12,0,4,5,4,12,15,12,1,2,12,2,3,10,4,15,5,4,12,11,0,15,4,40,4,15,1,4,4,40,12,15,1,0,0,5,11,12,15,0,2,4,11]]; // wrong format
您可以具有一個數組,以[x,y]格式放置所有歷史數據,可以在xAxis和系列聲明的兩個類別中使用該數組。
var historicalData = [['2013-11-20 15:00:00',3],['2013-11-20 16:00:00',11],['2013-11-20 17:00:00',0],['2013-11-20 18:00:00',3],['2013-11-20 19:00:00',4],['2013-11-20 20:00:00',40],['2013-11-20 21:00:00',2],['2013-11-20 22:00:00',11],['2013-11-20 23:00:00',1],['2013-11-21 00:00:00',5],['2013-11-21 01:00:00',40]]; // finish the rest data by yourself
首先,您將顯示historyData的前N個數據點。 (根據您的需要修改var defaultDataNum = 5;
)
series: [{
name: 'Real data',
data: (function() {
var data = [];
// display the first defaultDataNum points in the beginning
for (var i = 0; i < defaultDataNum; i++) {
data.push(historicalData[i]);
}
return data;
})()
}]
然后從historyData再獲得一點,然后每隔1秒顯示一次。
var intervalId = setInterval(function() {
series.addPoint(historicalData[currentDataPos], true, true);
currentDataPos++;
// stop update when finish display all data
if(currentDataPos == historicalData.length)
clearInterval(intervalId);
}, 1000);
這是基本思想,所有細節請參考我的jsfiddle。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.