Highcharts Highstock,如何通过单击范围选择器按钮从系列中偏移所有Y数据

Highcharts Highstock,如何通过单击范围选择器按钮从系列中偏移所有Y数据,highcharts,highstock,Highcharts,Highstock,我有一个包含两个窗格的Highstock图表(so 2系列)。第一个系列以毫米为单位显示了不同日期的一些高度数据,第二个系列显示了相同的日期,但累积了从第1个系列中获取的高度。以下是我的数据的简化示例: 一级联赛: [1373313300000.0,0.4]、[1373313900000.0,0.6]、[1373314500000.0,1]、[1373315100000.0,0.2]、[1373315700000.0,0.6]、[1373316300000.0,0.8]] 二级联赛: [1373

我有一个包含两个窗格的Highstock图表(so 2系列)。第一个系列以毫米为单位显示了不同日期的一些高度数据,第二个系列显示了相同的日期,但累积了从第1个系列中获取的高度。以下是我的数据的简化示例:

一级联赛: [1373313300000.0,0.4]、[1373313900000.0,0.6]、[1373314500000.0,1]、[1373315100000.0,0.2]、[1373315700000.0,0.6]、[1373316300000.0,0.8]]

二级联赛: [1373313300000.0,0.4]、[1373313900000.0,1.0]、[1373314500000.0,2.0]、[1373315100000.0,2.2]、[1373315700000.0,2.8]、[1373316300000.0,3.6]]

我想做的是,当用户单击范围选择器上的任何按钮(缩放按钮,即1d、1w、1m、all等)时,重新启动从序列2到0的累积值。因此,如果用户选择1天、1周或其他任何范围,他应该看到从系列2开始的第一个高度=0,然后是正常的求和模式

我的问题是:动态修改序列2中的Y数据以将其重新启动为0并创建整个序列的“偏移量”的正确方法是什么?有没有办法指定一个偏移量值来放下整个系列,或者我必须在整个系列上迭代并将数据修改为1乘1

在什么情况下我应该触发这些变化?在xaxis事件中

非常感谢您的建议

确保您需要使用事件处理程序


然后,您需要为第二个系列设置新的数据,这些数据将从开始累积。是的,您需要循环所有点(在特定的时间范围内),计算新值,然后设置数据。

我迭代myChart.series[0]。点并创建一个新数组,其中Y值偏移没有问题。。。但是,执行myChart.series[0].setData(myNewArrayOfData)会再次触发afterSetExtremes事件并进入无限循环。。。应该有更好的方法可以做到这一点。不?如果我尝试用1更新现有的点1,而不是创建一个新的序列,例如:myChart.series[0]。points[I]。update(5,false),则图表不会刷新,因此不会应用我的更改。。。如果我重新绘制,我的更改似乎会被丢弃。。。在这个数据修改过程中,我确实有点不明白……无限循环?隐马尔可夫模型。。在这种情况下,添加一些标志,如:
loop=false。。setData(newData);循环=真
然后在afterSetExtremes中检查循环:
如果(循环){..do calculations..}否则{..do nothing..}
循环
保护为我工作,但这似乎是库应该防止的事情。首先,在设置数据(
setData()
方法)时不应该发生这种情况。我认为我们不应该保护这个-如果用户使用explicite
setExtremes()
,那么用户应该保护这个无限循环。