寻找一种方法来绘制d3中的滚动/移动平均值,而无需事先操作数据。所以我想通过平均每个数据点与之后的两个数据点来消除这条线。我的代码是这样的d3.js中的绘图滚动/移动平均值
var data = [3, 66, 2, 76, 5, 20, 1, 3, 8, 90, 2, 5, 70];
var w = 20,
h = 80;
var x = d3.scale.linear()
.domain([0, 1])
.range([0, w]);
var y = d3.scale.linear()
.domain([0, 100])
.rangeRound([h, 0]);
var chart = d3.select("body").append("svg")
.attr("class", "chart")
.attr("width", w * data.length -1)
.attr("height", h);
var line = d3.svg.line()
.x(function(d,i) { return x(i); })
.y(function(d) { return y(d); })
var movingAverageLine = d3.svg.line()
.x(function(d,i) { return x(i); })
.y(function(d) { return y(d); })
chart.append("svg:path").attr("d", line(data));
chart.append("svg:path").attr("d", movingAverageLine(data));
我可以指定movingAverageLine计算以下数据点的平均值?我想不出有什么办法可以在这个功能中访问它们。
我在jsfiddle上设置了一个例子。 http://jsfiddle.net/tjjjohnson/XXFrg/2/#run
编辑问题澄清一点。通过“滚动”,我的意思是每天使用几个点的平均值,例如三天平均。这是为了消除这条线。 – tjjjohnson 2012-08-16 04:41:00
我认为你将不得不改变数据 - 当你将数组传递给d3函数时,它将一次迭代1项。任何原因你不能创建另一个数组传递? – mike 2012-08-16 09:35:17
没理由我无法修改数据,我只是想知道是否有一些狡猾的D3可以做得很好 – tjjjohnson 2012-08-17 10:38:11