我正在尝试在Highstock中将lazy loading与dynamically updated data合并。这个想法是要有一个庞大的历史记录(包括数百万个数据点),并实时更新(如果用户滚动到右边缘)。
为了防止在延迟加载数据时进行循环加载,我需要设置:
navigator : {
adaptToUpdatedData: false
}
但是,使用此设置,向图表添加新数据点将不再更新导航器,这根本使我无法看到那些新数据点(因为我无法滚动到上一个最右边的条目)。我也尝试将这些新数据点添加到导航器系列中,但导航器仍未更新。我还尝试过以编程方式更改导航器系列的xAxis中的最大值,但无济于事。
我该如何进行这项工作?
我花了几个星期解决这个问题,这很棘手。延迟加载(请参见http://www.highcharts.com/stock/demo/lazy-loading的“具有异步加载的170万个点”演示)是很简单的事情,或者添加了新的数据点,但是都需要一点技巧。
首先,我将详细说明最终得到的解决方案。不要将AdaptToUpdatedData设置为false,只需将其省略即可。您将要做的所有工作都将需要更改生成数据的后端代码。本质上,返回到Highstock的数据将始终是您拥有的数据的[[full
我使用了一个包含xAxis
最大值的全局变量,并且在更新图表时,我验证了新的xAxis
值是否大于maxX
变量。