2013-06-24 40 views
1

我正在脚本化一个网页,显示ThingSpeak的HighStock数据图表。它将数据调用限制为8000点,所以我需要多次调用才能加载整个数据集。我打算在最新的数据进入时显示图表,然后添加更早的数据。我第一次尝试使用addPoint()将导航器扩展回1970年,但不添加数据。添加日期早于当前数据的数据有问题吗?我应该如何编写脚本?异步将历史记录添加到现有HighStock图表

这是我如何调用addPoint()方法:

dynamicChart.series[fieldList[fieldIndex].series] 
      .addPoint(fieldList[fieldIndex].data,false); 

和数组[]我把它:

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,但它没”帮助。

然后我更换了加分这个()行:

dynamicChart.series[fieldList[fieldIndex].series].addPoint({},false); 

...并得到了同样的结果。这里发生了什么?我的数据对象有什么问题?

+0

在当前数据之前显示数据没有问题。确保你的点有数字作为值,并且turboThreshold设置为足够高,如果你使用对象作为点。另外,让这个问题成为jsFiddle的例子。 –

+0

请查看我添加到上面问题的详细信息。 – turgo

+0

对不起,但我需要看到更多的代码 - 正如我之前所说,与jsFiddle玩了一段时间,并重现那里的问题。 –

回答

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); 

排序是非常重要的,如果订单没有增加,新数据将不会显示。