我正在Highchart的(4.2.4)线型图表中为每个第二个数据绘制实时数据,即60分,持续1分钟。并且要求是长时间收集每个第二数据。我使用下面的代码来串行添加点。 我的系列数量为20 。对于每个系列,我必须每秒添加点数。每个系列的 turboThreshold设置也约为2000 。并且切片应该在1000点数据之后完成。
chart.series[0].addPoint(point, false, data > 1000?shift: false, false);
我发现我的浏览器性能非常低,并且图表在一段时间后也非常反应迟钝。我能做些什么才能获得更好的表现?我试过以下的东西: 1)关闭系列动画:
plotOptions: {
series: {
animation:false,
states: {
hover: {
lineWidthPlus: 0
}
}
}
},
2)关闭动画并重新绘制地图上的addpoint
3)关闭系列标记
4)在应用程序中包含boost.js模块
script src="https://code.highcharts.com/modules/boost.js"
答案 0 :(得分:0)
如果没有你的实际代码,我只能推测你正在做什么,但我的假设是你每次添加一个点时都试图重绘图表,这将是每秒20次重绘,这是非常过分的可能需要1秒多的时间来完成重绘,这意味着将会有新的点数被添加,而旧的点数仍在被绘制。在添加点时将重绘设置为false,并每秒或随机手动重绘。
示例代码:
$(function() {
var series = function(i) {
return {
name: 'Random data '+i,
data: (function() {
// generate an array of random data
var data = [],
time = (new Date()).getTime(),
i;
for (i = -19; i <= 0; i += 1) {
data.push({
x: time + i * 1000,
y: Math.random()
});
}
return data;
}())
};
};
$(document).ready(function() {
Highcharts.setOptions({
global: {
useUTC: false
}
});
$('#container').highcharts({
chart: {
type: 'line',
animation: Highcharts.svg, // don't animate in old IE
marginRight: 10,
events: {
load: function() {
var chart = this;
// set up the updating of the chart each second
setInterval(function() {
for (var i = 0; i < 20; i++) {
var series = chart.series[i];
var x = (new Date()).getTime(), // current time
y = Math.random();
series.addPoint([x, y], false, false,false);
}
chart.redraw();
}, 1000);
}
}
},
title: {
text: 'Live random data'
},
xAxis: {
type: 'datetime',
tickPixelInterval: 150
},
yAxis: {
title: {
text: 'Value'
},
plotLines: [{
value: 0,
width: 1,
color: '#808080'
}]
},
tooltip: {
formatter: function() {
return '<b>' + this.series.name + '</b><br/>' +
Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', this.x) + '<br/>' +
Highcharts.numberFormat(this.y, 2);
}
},
exporting: {
enabled: true
},
plotOptions: {
series: {
marker: {
enabled: true
}
}
},
series: [series(1), series(2),series(3), series(4),series(5), series(6),series(7), series(8),series(9), series(10),series(11), series(12),series(13), series(14),series(15), series(16),series(17), series(18),series(19), series(20)]
});
});
});
在http://jsfiddle.net/62k8sryc/1/
处小提琴注意强>
因为这是JavaScript,所以它在很大程度上取决于浏览器构建/版本和机器规格。