尋找一種方法來繪製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