我正在编写一个网页,其中显示了来自ThingSpeak的HighStock数据图表。它将数据调用限制为8000点,因此我需要多次调用来加载整个数据集。我计划在最新数据进入时显示图表,然后添加早期数据。我第一次尝试使用addPoint()将导航器扩展回1970,但不添加数据。添加日期早于当前数据的数据是否存在问题?我应该如何编写脚本?
以下是我调用addPoint()方法的方法:
dynamicChart.series[fieldList[fieldIndex].series]
.addPoint(fieldList[fieldIndex].data,false);
和我发送的Array []:
fieldList: Array[3]
0: Object
data: Array[8000]
0: Array[2]
0: 1371821816000
1: 36.79
length: 2
__proto__: Array[0]
1: Array[2]
0: 1371821836000
1: 36.75
length: 2
__proto__: Array[0]
2: Array[2]
3: Array[2]
4: Array[2]
我尝试将turboThreshold增加到10000,但它没有帮助。
然后我用这个替换了add points()行:
dynamicChart.series[fieldList[fieldIndex].series].addPoint({},false);
......并得到了相同的结果。这里发生了什么?我的数据对象有什么问题?
答案 0 :(得分:0)
addPoints()方法只添加一个点。
我的解决方案是将新点推入原始数组,对其进行排序,然后使用setData()更新系列:
for (var h=0; h<data.feeds.length; h++) // iterate through each feed (data point)
{
// if a numerical value exists add it
if (!isNaN(parseInt(v))) { fieldList[fieldIndex].data.push(p); }
}
fieldList[fieldIndex].data.sort(function(a,b){return a[0]-b[0]});
dynamicChart.series[fieldList[fieldIndex].series].setData(fieldList[fieldIndex].data,false);
排序非常重要,如果订单没有增加,则不会显示新数据。