数据分组生效时更新折线图中的点

时间:2015-02-13 21:19:42

标签: highcharts

我需要在新数据到达时更新图表中的特定点。我写了以下函数:

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模式与它有任何关系。

1 个答案:

答案 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;
      }
  }
}