我的图表有多个序列,当我尝试添加一个新点并在该序列的addpoint函数中启用true转换时,似乎减少了很多点。我的requestData函数运行一个ajax查询,该查询命中我的api并带回数据。初始加载可以很好地加载数据,但是在将第一个点添加到序列中之后,它似乎从某些序列中减去了太多点。
这是初始加载的样子
https://gyazo.com/51a2afc465f8fbb625e384e75d52b865
这是一两个请求后的样子:
https://gyazo.com/0b523e4675c681b7495a38660b4de72c
https://gyazo.com/5cf7e9498ab3b34f3eaac1cf50a0bdc5
这是我请求数据的代码:
function requestData(chart1, start, devID, attrib) {
$.ajax({
url: 'api/MetricsAPI/',
data: {
deviceID: devID,
attribute: attrib,
startDate: start
},
success: function (dataset) {
var chartSeries = chart1.series;
for (var index = 0; index < dataset.length; index++) {
for (var i = 0; i < chartSeries.length; i++) {
if (chartSeries[i].name == dataset[index].attribute) {
var shift = chartSeries[i].data.length > 12;
chartSeries[i].addPoint([parseInt(dataset[index].epochTime), dataset[index].value], true, shift);
console.log('date: ' + dataset[index].epochTime + ', ' + 'value: ' + dataset[index].value);
}
}
}
chart1.redraw();
//call it again after one minute
setTimeout(requestData, 30000, chart1, dataset[dataset.length - 1].epochTime, devID, attrib);
},
failure: function (xhr, error) {
console.log(xhr);
console.log(error);
},
cache: false
});
}
最佳答案
当前代码可能存在两个问题:
将redraw
参数设置为false,在这里:chartSeries[i].addPoint([parseInt(dataset[index].epochTime), dataset[index].value], true, shift);
设置series.id
并避免比较chartSeries[i].name == dataset[index].attribute
。要获得正确的序列,请使用chart.get(id)
。