首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flot javascript graphing:多个系列的setData

Flot javascript graphing:多个系列的setData
EN

Stack Overflow用户
提问于 2013-09-13 03:18:36
回答 1查看 5.6K关注 0票数 3

我试图一次绘制6个时间序列,并每隔几毫秒更新它们的值。

下面是我最初绘制数据的方式,它工作得很好:

代码语言:javascript
复制
var d1 = [];
var d2 = [];
var d3 = [];
var d4 = [];
var d5 = [];
var d6 = [];

d1 = getRandomData(d1, totalPoints);
d2 = getRandomData(d2, totalPoints);
d3 = getRandomData(d3, totalPoints);
d4 = getRandomData(d4, totalPoints);
d5 = getRandomData(d5, totalPoints);
d6 = getRandomData(d6, totalPoints);

var plot = $.plot("#placeholder", [{
data: d1,
lines: { show: true, fill: false }
}, {
data: d2,
lines: { show: true, fill: false }
}, {
data: d3,
lines: { show: true, fill: false }
}, {
data: d4,
lines: { show: true, fill: false }
}, {
data: d5,
lines: { show: true, fill: false }
}, {
data: d6,
lines: { show: true, fill: false }
}]);

但我的更新函数不起作用:

代码语言:javascript
复制
function update() {

d1 = getRandomData(d1, totalPoints);
d2 = getRandomData(d2, totalPoints);
d3 = getRandomData(d3, totalPoints);
d4 = getRandomData(d4, totalPoints);
d5 = getRandomData(d5, totalPoints);
d6 = getRandomData(d6, totalPoints);

plot.setData([d1, d2, d3, d4, d5, d6]);

// Since the axes don't change, we don't need to call plot.setupGrid()
plot.draw();
setTimeout(update, updateInterval);

}
//update();

当我取消注释并调用update()时,图形变为空白。但我知道数据最初加载得很好,没有调用它。

我如何更新我的d数组并正确地重新绘制图形?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2013-09-13 07:18:01

setDataplot的data参数都接受数据formatted the same way

因此,创建一个可重用的函数:

代码语言:javascript
复制
 getSeriesObj = function() {
   return [
    {
      data: getRandomData(d1, totalPoints),
      lines: { show: true, fill: false }
    }, {
      data: getRandomData(d2, totalPoints),
      lines: { show: true, fill: false }
    }, {
      data: getRandomData(d3, totalPoints),
      lines: { show: true, fill: false }
    }, {
      data: getRandomData(d4, totalPoints),
      lines: { show: true, fill: false }
    }, {
      data: getRandomData(d5, totalPoints),
      lines: { show: true, fill: false }
    }, {
      data: getRandomData(d6, totalPoints),
      lines: { show: true, fill: false }
    }
  ];
}

对于初始图:

代码语言:javascript
复制
var plot = $.plot("#placeholder", getSeriesObj());

要重置数据,请执行以下操作:

代码语言:javascript
复制
plot.setData(getSeriesObj());
plot.draw();

Here's a jsFiddle demo

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18772647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档