具有多个区域范围和线系列的 Highcharts 鼠标跟踪行为

Highcharts mouse tracking behaviour with multiple arearange & line series

我创建了一个图表,它使用 arearange 系列作为一种甘特图覆盖 line 系列。

JSFiddle

问题是,当鼠标悬停在 arearange 系列上时,当您从左向右移动光标时,工具提示会跳转到其他系列。下图显示了这种效果(红点表示鼠标位置):

我已尝试按照 API 中所述设置以下选项:

plotOptions.series.stickyTracking: false
tooltip.shared: false

我什至尝试过:tooltip.snap: 0

但是跳跃效果还是出现了。我的目的是插入 mouseOvermouseOut 事件,以便我可以在图表下方显示一些额外的详细信息 - 然而,这对于当前行为是不可行的。

是否可以让 mouseOvermouseOut 事件仅在光标直接移动到系列上时触发?这是我的配置问题还是当前 highcharts 版本的限制?

根据 Highcharts GitHub 页面的 this 建议,我在我的区域范围内插入了一些额外的点,以便工具提示可以找到最近的点(与我之前的线相反)期待)。

查看此 JSFiddle 示例。

arearange插值函数:

function interpolateAreaRange(data, splitBy) {
  var interpolate = function(x1, x2, x3, y1, y2) {
    return y1 + (y2 - y1) * (x2 - x1) / (x3 - x1);
  };
  var newData = [],
    step = 0,
    xStart = 0,
    xEnd = 0,
    xNew = 0,
    p = 0;
  if (data.length > 1 && splitBy > 0) {
    newData.push(data[0]);
    for (var i = 1; i < data.length; i++) {
      p = i - 1;
      xStart = data[p][0];
      xEnd = data[i][0];
      step = (xEnd - xStart) / splitBy;

      for (var s = 1; s <= splitBy; s++) {
        xNew = xStart + (step * s);
        newData.push([
          xNew,
          interpolate(xStart, xNew, xEnd, data[p][1], data[i][1]),
          interpolate(xStart, xNew, xEnd, data[p][2], data[i][2])
        ]);
      }
      newData.push(data[i]);
    }
    return newData;
  }
  return data;
}