我想以另一种方式移动图表而不是addPoint。您可以在我的JSFIDDLE中看到我的意思:http://jsfiddle.net/Charissima/TEEdw/3/ 当图表填满容器并添加下一个点时,它会向左移动而不会丢失第一个点。
它工作正常,但有时我可以看到图表交换一点点。甚至值得:当运行时间较长时,图表会丢失。它仍然有效,您可以看到它在右上角移动和更新y,但图表不再可见。即使是导航仪也是空的。
所以我的问题是:是否有更好更聪明的方式来改变图表?
data.push([ xTime, prevY ]);
data.push([ xTime, y ]);
series.setData(data, true);
var faktor = ( (chart.xAxis[0].max - chart.xAxis[0].min) / 60 / 1000 ) * 200;
chart.xAxis[0].setExtremes( chart.xAxis[0].min + faktor, chart.xAxis[0].max + faktor);
答案 0 :(得分:1)
我一直在研究一个属性非常相似的图表,并遇到类似的问题。 addPoint()移位标志的一个不受欢迎的影响是它试图保持数据集与初始化时的大小相同。我猜这是你不使用它的原因。它不允许您将数据集增长到特定大小,然后开始转移。我有这个转变的问题,所以我采取了你正在做的事情。我认为这是addPoint()的普遍接受的替代方案。
但是......认为Highchart(或者只是Highstock)似乎拥有最大数量的数据点。我不知道所有图表(甚至是所有用户/浏览器)是否相同,但对于我来说,当数据计数为1000时,你的图像似乎消失了。看到这个小提琴:> jsfiddle.net/TEEdw/4/你可以看到数据长度增长到1000然后图表消失了。我在我的图表上遇到了同样的问题。由于我的图表中的其他因素,我的解决方案更加复杂。但一个简单的解决方案是监视数据计数,当它接近1000时,切换到带有shift方法的addPoint()。看到这个小提琴:> jsfiddle.net/TEEdw/5/可能还有其他方法可以让数据集增长,然后在某一点上移动。但是这个只使用了你现有的代码。您可以根据数据长度动态设置移位标志,并且只有在数据达到一定长度后才将其设置为true。
编辑:好的......还有一个名为turboThreshold(http://api.highcharts.com/highcharts#plotOptions.series.turboThreshold)的plotOptions设置可以被禁用。它默认为1000(这是有道理的)。将它设置为零允许你的图表在1000之后继续运行。看到这个小提琴:jsfiddle.net/TEEdw/6 /