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

Updating a point in a line chart when data grouping is in effect

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

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

在 return 上设置断点,我验证了 series.yData[i] 具有新值,即使它没有出现在图表上。我怎样才能让它真正更新图表?

我正在使用 HighStock 2.0.4。

编辑:创建了一个 JSFiddle:http://jsfiddle.net/swish014/2unh1cLa/

编辑:更改了标题,因为我(现在)不相信涡轮模式与它有任何关系。

这两条评论是解决我自己问题的关键。

它与数据分组有关(而不是我最初认为的 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;
      }
  }
}