Highstock在同一x轴上执行多个数据点

时间:2017-03-14 11:53:25

标签: highcharts highstock

当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/

两个数据集看起来完全相同,但图例值不同,因为同一轴上的两个点都不会显示。

2 个答案:

答案 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访问这些值并计算差异。

示例:http://jsfiddle.net/jqdh79vv/