Highstock 在同一 x 轴上步进多个数据点
Highstock step multiple data points on same x axis
当highstock图表数据集在同一轴上有多个点时ex:
data: [[0,0], [0, 100], [1, 100], [1,200], [4, 100], [4, 200]]
默认情况下,点并不总是选择最高的数字。看起来它随机选择了同一轴上的数字之一。
这是我的提琴手示例:http://jsfiddle.net/ceo1y97m/
正如您将鼠标悬停在不同点上时所看到的,它并不总是显示最高点的 Y 值。我如何让它只显示最高点的价值?
编辑:这是我有多个相同的 x 值的原因:
假设这条线表示一段时间内您存入帐户的金额。在该行的图例中,我想显示您在查看期间存入的金额。这将是右边最远点的 Y 值减去左边最远点的 Y 值。如果我不包括重复的 Y 值,则此计算不正确。
查看更新的提琴手以在图例值上显示此错误(放大和缩小以更改图例值):https://jsfiddle.net/LS384/822/
两个数据集看起来完全相同,但图例值不同,因为同一轴上的两个点未显示。
我不确定步骤图的用途是这样的,每个轴点应该只有 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].数据])
这是 fiddle 的预期行为 https://jsfiddle.net/LS384/826/
我会处理数据,所以每个 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
访问值并计算差异。
当highstock图表数据集在同一轴上有多个点时ex:
data: [[0,0], [0, 100], [1, 100], [1,200], [4, 100], [4, 200]]
默认情况下,点并不总是选择最高的数字。看起来它随机选择了同一轴上的数字之一。
这是我的提琴手示例:http://jsfiddle.net/ceo1y97m/
正如您将鼠标悬停在不同点上时所看到的,它并不总是显示最高点的 Y 值。我如何让它只显示最高点的价值?
编辑:这是我有多个相同的 x 值的原因:
假设这条线表示一段时间内您存入帐户的金额。在该行的图例中,我想显示您在查看期间存入的金额。这将是右边最远点的 Y 值减去左边最远点的 Y 值。如果我不包括重复的 Y 值,则此计算不正确。
查看更新的提琴手以在图例值上显示此错误(放大和缩小以更改图例值):https://jsfiddle.net/LS384/822/
两个数据集看起来完全相同,但图例值不同,因为同一轴上的两个点未显示。
我不确定步骤图的用途是这样的,每个轴点应该只有 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].数据])
这是 fiddle 的预期行为 https://jsfiddle.net/LS384/826/
我会处理数据,所以每个 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
访问值并计算差异。