0

我想以不同于 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);          
4

1 回答 1

1

我一直在研究具有非常相似属性的图表并且遇到了类似的问题。addPoint() 移位标志的不良影响之一是它试图使数据集保持与初始化时相同的大小。我猜这是你不使用它的原因。它不允许您将数据集增加到一定大小然后开始转移。我在换班时遇到了这个问题,所以我采取了你正在做的事情。我认为这是 addPoint() 的普遍接受的替代方法。

但是......再加上 Highchart(或者可能只是 Highstock)似乎拥有它可以处理的最大数据点数的想法。我不知道所有图表(甚至所有用户/浏览器)是否都相同,但对我来说,当数据计数为 1000 时,你的似乎消失了。请参阅这个小提琴:> jsfiddle.net/TEEdw/4/you可以看到数据长度增长到1000然后图表消失。我在图表上遇到了同样的问题。由于图表中的其他因素,我的解决方案更加复杂。但一个简单的解决方案是监控数据计数,当它接近 1000 时,切换到 addPoint() 和 shift 方法。看到这个小提琴: > jsfiddle.net/TEEdw/5/ 可能还有其他方法可以让数据集增长然后在某个点移动。但这只是使用了您现有的代码。

编辑:好的......还有一个名为 turboThreshold (http://api.highcharts.com/highcharts#plotOptions.series.turboThreshold)的 plotOptions 设置可以被禁用。它默认为 1000(这是有道理的)。将其设置为零允许您的图表在 1000 之后继续运行。请参阅此小提琴:jsfiddle.net/TEEdw/6/

于 2013-08-13T16:19:57.497 回答