Я думаю, что нашел частичный ответ на мой собственный вопрос:
Я итерация над точками данных серии, как это:
http://api.highcharts.com/highcharts#Series.data
и затем вызвать point.Remove.
Проблема с этим решением заключается в том, что он не рисует стиль монитора, как в примере, , а скорее всего красный график всей диаграммы при каждом изменении.
http://jsfiddle.net/JKCLx/
$(function() {
$(document).ready(function() {
Highcharts.setOptions({
global: {
useUTC: false
}
});
var chart;
$('#container').highcharts({
chart: {
type: 'spline',
animation: Highcharts.svg, // don't animate in old IE
marginRight: 10,
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, false);
// series.data[0].remove(false);
series.data[0].remove(true);
}, 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);
}
},
legend: {
enabled: false
},
exporting: {
enabled: false
},
series: [{
name: 'Random data',
data: (function() {
// generate an array of random data
var data = [],
time = (new Date()).getTime(),
i;
for (i = -19; i <= 0; i++) {
data.push({
x: time + i * 1000,
y: Math.random()
});
}
return data;
})()
}]
});
});
});
Спасибо, ваше решение работает, но я этого не понимаю, так что, пожалуйста, проясните немного? аргумент shift означает, что для каждой добавляемой точки я удаляю другую, но если временной интервал между точками в не константе, эта логика неверна. Так что мне действительно нужна функция removePoint(), которая не приводит к тому, что серия будет полностью перерисована. –
Что вы имеете в виду, если не полностью перерисовать? Вы можете или перерисовать или нет, также вы не можете просто вырезать часть диаграммы при удалении точки. Да, сдвиг работает таким образом, поэтому, когда новая точка добавлена, удалите последнюю. Как насчет добавления еще одной точки в диаграмму, которая будет находиться за пределами области графика, и удалить эту точку, когда придет новый? Или может быть такое же число, как видимые точки, поэтому нерегулярный интервал не будет проблемой, я думаю. –