我已经用javascript和d3.js实现了一个实时图形。数据是随机生成的,它会根据随机数发生变化。我想填充折线图下的区域,但我不知道如何填充它,因为数据正在移动!以下代码对于静态图表是正确的,但是我如何将其用于动态移动数据
//Css part
.area {
fill: lightsteelblue;
stroke-width: 0;
}
//script
var area = d3.svg.area()
.x(function(d, i) { return x(i); })
.y0(height)
.y1(function(d, i) { return y(d); });
svg.append("path")
.datum(data)
.attr("class", "area")
.attr("d", area); 这就是我的数据是如何生成的:
var n = 100,
random = d3.random.normal(0, 50),
data = d3.range(n).map(random);谢谢,
发布于 2013-06-27 14:16:16
为了实时移动该区域,您必须做相当多的工作。幸运的是,Mike Bostock用d3.js为path transitions写了一个非常好的教程。
关键代码是:
// push a new data point onto the back
data.push(random());
// redraw the line, and then slide it to the left
path
.attr("d", area)
.attr("transform", null)
.transition()
.ease("linear")
.attr("transform", "translate(" + x(-1) + ")");
// pop the old data point off the front
data.shift();还要注意的是,你肯定会在某一点上使用选择,为此,你可以看看下面的教程:A Bar Chart, Part 2。
再加上你已经使用过的面积图的例子,你就快完成了!唯一的区别是你写的
现在,您还可以从以下问题中获得灵感:Smooth update to x axis in a D3 line chart?
最后是here is a jsFiddle,它为您提供了一个您正在寻找的工作示例。
https://stackoverflow.com/questions/17334923
复制相似问题