我需要在新数据到达时更新图表中的特定点。我写了以下函数:
function updatePoint(series, x, y) {
for (i = 0; i < series.data.length - 1; i++) {
var point = series.data[i];
if (point.x === x) {
point.update(y);
return;
}
}
}
这很好用,除非图表有超过turboThreshold点,在这种情况下,series.data消失了,我只有series.xData和series.yData可以使用。我尝试了以下变体,但图表实际上并没有更新:
function updateTurboPoint(series, x, y) {
for (i = 0; i < series.xData.length; i++) {
if (series.xData[i] === x) {
if (series.yData.length > i) {
series.yData[i] = y;
return;
}
}
}
}
在返回时设置断点,我验证了series.yData [i]具有新值,即使它没有出现在图表上。如何让它实际更新图表?
我正在使用HighStock 2.0.4。
编辑:创建了一个JSFiddle:http://jsfiddle.net/swish014/2unh1cLa/
编辑:更改了标题,因为我(现在)不相信turbo模式与它有任何关系。
答案 0 :(得分:0)
这两条评论是解决我自己问题的关键。
它与dataGrouping有关(而不是我最初想到的turbo模式)。
series.points数组确实存在,并且更新某个点会根据需要更新图表。
在我的问题中,我列出了两个单独的函数来更新点,但我相信我只能使用一个函数:
function updatePoint(series, x, y) {
for (i = 0; i < series.points.length - 1; i++) {
var point = series.points[i];
if (point.x === x) {
point.update(y);
return;
}
}
}