1

我正在编写一个网页脚本,该网页显示来自 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);

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

4

1 回答 1

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

排序很重要,如果顺序没有增加,则不会显示新数据。

于 2013-06-26T17:02:43.900 回答