我不知道这是否是Highcharts的错误,但是我在同一个xAxis上的同一系列中绘制了两个值,我希望能够捕获同一个xAxis中的所有点在工具提示中。不幸的是,Highcharts的印象只有一点存在:
事实上,如果您将鼠标悬停在最左边的点并将光标移动到值1
的中心点上,则值2
的点将突出显示,这是Highcharts认为的重点我在徘徊。
我可以使用一个循环来确定哪些点也存在,但是我在哪里使用共享工具提示,而我的生产图表可以在很多不同的系列中绘制数百个点,我认为这将是一个非常资源 - 密集的方法。
Here is a JSFiddle demo使用以下系列数据生成上述图表:
series: [{
data: [
{ x: 0, y: 1 }, { x: 1, y: 1 }, { x: 1, y: 2 }, { x: 2, y: 2 }
]
}]
我还定义了以下tooltip
属性:
tooltip: {
shared: true,
formatter: function() {
return "Points: " + this.points.length + "<br>Value: " + this.y;
}
}
如果我们在悬停在中心线上时调试this.points
,我们会看到其中包含的内容是:
[Object] 0: Object
key: 1,
percentage: undefined,
point: Ga,
series: c,
total: undefined,
x: 1,
y: 2
根本没有提到{ x: 1, y: 1 }
点。
如何在{ x: 1, y: 2 }
点旁边的工具提示中捕获和显示此数据,而无需遍历每个系列中的每个点,以在工具提示formatter
函数中找到相似的点?
围绕此问题的另一个好例子是启用allowPointSelect
时:您根本无法点击{ x: 1, y: 1 }
点 - 当您这样做时,会选择{ x: 1, y: 2 }
点。 JSFiddle demo
答案 0 :(得分:1)
第1部分:选择最近的点
使用折线图,Highcharts根据点和鼠标的水平距离计算最近的点。
这意味着一旦它构建了它的点树,给定两个具有相同x的点,它将始终返回它命中的第一个点。
你可以覆盖它以使用到达点的实际距离,如下所示:
series.kdComparer = 'distR';
然后它应该给你真正的最近点。
更新:选择其他积分
要获得同一系列中具有相同x值的其他点,您可以利用Highcharts k-d点树。通过此搜索比搜索系列点更快更多。
这是一个更新的小提琴,它做到了这一点。请注意,即使未按顺序声明匹配点,这仍然有效。它还可以让您找到具有完全相同坐标的点。