当highstock图表数据集在同一轴上有多个点时:
data: [[0,0], [0, 100], [1, 100], [1,200], [4, 100], [4, 200]]
默认情况下,该点并不总是选择最高数字。看起来它随机选择同一轴上的一个数字。
这是我的小提琴示例:http://jsfiddle.net/ceo1y97m/
正如您可以看到当您将鼠标悬停在不同点上时,它并不总是显示最高点的Y值。如何才能显示最高点的值?
编辑:这就是我有多个x值相同的原因:
假设该行代表您在一段时间内存入帐户的金额。在该行的图例中,我想显示您在查看期间存入的金额。这将是最远点的右边Y值减去最左边的Y值。如果我不包含重复的Y值,则此计算不正确。
查看更新的fiddler以在图例值上显示此错误(放大和缩小以更改图例值):https://jsfiddle.net/LS384/822/
两个数据集看起来完全相同,但图例值不同,因为同一轴上的两个点都不会显示。
答案 0 :(得分:2)
我不确定步骤图是如何使用的,每个轴点应该只有1个值。 您可以做的是过滤数据以保持每个点的最高值
data: [[0,0], [0, 100], [1, 100], [1,200], [4, 100], [4, 200]]
for (var i in data) {
if (filteredData[data[i][0]] == undefined) {
filteredData[data[i][0]] = data[i]
} else {
if (filteredData[data[i][0]][1] < data[i][1]) {
filteredData[data[i][0]] = data[i];
}
}
}
这是您编辑的过滤器,图表看起来相同,您希望行为http://jsfiddle.net/ceo1y97m/4/
编辑:
我做了一个解决方法,我隐藏了未经过滤的数据,使用过滤后的数据显示并给它与未过滤的数据相同的颜色,并在计算差异的函数中使用未过滤的数据(ch.series [0 ]。数据])
以下是您预期行为https://jsfiddle.net/LS384/826/
的小提琴答案 1 :(得分:1)
我会处理数据,因此每x值有一个点和附加信息 - 多个值。我将{ x, y }
视为关于如何可视化点的信息,再加上包含所有其他值的数组,以便进行正确的计算。
这:
[
[0, 0],
[0, 100],
[1, 100],
[1, 200],
[1, 300],
成为这个:
[{
x: 0,
y: 100,
values: [0, 100]
}, {
x: 1,
y: 300,
values: [100, 200, 300]
}]
如上所述,您可以通过point.options.values
访问这些值并计算差异。