我正在尝试使用Rickshaw创建一个很好的占位符图,它显示随机数据的实时更新,如下所示:
var series = [[], []];
var random = new Rickshaw.Fixtures.RandomData(150);
for(var i = 0; i < 80; i++) {
random.addData(series);
}
var throughput = new Rickshaw.Graph( {
element: document.querySelector("#throughput_chart"),
width: "300",
height: "200",
renderer: "line",
series: [{
color: "gold",
data: series[0]
}]
});
var alerts = new Rickshaw.Graph( {
element: document.querySelector("#alerts_chart"),
width: "300",
height: "200",
renderer: "line",
series: [{
color: "red",
data: series[1]
}]
});
throughput.render();
alerts.render();
setInterval(function() {
random.addData(series);
throughput.update();
alerts.update();
/* XXX: This causes the data to stop drawing properly
series.forEach(function(s) {
s.shift();
});
*/
}, 1000);这是可行的,除了注释掉的部分。实际上,它一直在添加数据,这意味着图形变得越来越拥挤。我希望能够在每次向末尾添加新项时删除第一项,以便使图形具有相同数量的数据点,但是当我将代码快速放入其中时,即使console.log显示数组中仍然充满了数据,也会导致图形不显示任何数据。
我如何才能做到这一点,以便我一次只显示固定数量的数据点?
发布于 2013-06-06 01:46:40
根据人力车(http://code.shutterstock.com/rickshaw/examples/fixed.html)文档中的示例,我拼凑了一些与您需要的东西类似的东西:
JS FIDDLE
var tv = 50;
var throughput = new Rickshaw.Graph({
element: document.querySelector("#throughput_chart"),
width: "300",
height: "200",
renderer: "line",
series: new Rickshaw.Series.FixedDuration([{
name: 'one', color: 'gold'
}], undefined, {
timeInterval: tv,
maxDataPoints: 100,
timeBase: new Date().getTime() / 1000
})
});
var alerts = new Rickshaw.Graph({
element: document.querySelector("#alerts_chart"),
width: "300",
height: "200",
renderer: "line",
series: new Rickshaw.Series.FixedDuration([{
name: 'one', color: 'red'
}], undefined, {
timeInterval: tv,
maxDataPoints: 100,
timeBase: new Date().getTime() / 1000
})
});
for(var i = 0; i < 100; i++){
addRandomData(throughput);
addRandomData(alerts);
}
throughput.render();
alerts.render();
setInterval(function () {
addRandomData(throughput);
addRandomData(alerts);
throughput.render();
alerts.render();
}, tv);
function addRandomData(chart) {
var data = {
one: Math.floor(Math.random() * 40) + 120
};
chart.series.addData(data);
}发布于 2013-06-16 04:23:48
据我所知,FixedDuration类不能与RandomData一起工作。我所做的是删除序列数组中的第一个数据点,这样图形就不会变得拥挤,并且在添加更多数据时会向左流动:
setInterval( function() {
random.addData(seriesData);
for (i=0; i < seriesData.length; i++){
var series0 = seriesData[i][seriesData[i].length-1];
seriesData[i].shift();
seriesData[i].push(series0);
}
graph.update();
}, 3000 );我不完全确定为什么需要将最后添加的数据点重新添加到数组的末尾(series[x].push(seriesX)),但是它不能正常工作。它没有使最后一个数据点加倍的效果,只添加了一个数据点。希望这对你有用!
https://stackoverflow.com/questions/16944128
复制相似问题