【发布时间】:2014-07-20 04:11:52
【问题描述】:
我正在使用d3 来可视化一些数据。我的数据集之一,格式为:
[[date, value], [date, value], etc...] 跳动很多,我想加入移动平均线。
我从 Stack Overflow 找到了这个函数作为计算移动平均线的解决方案,但我觉得使用它不太合适,因为 (1) 我不明白它是如何工作的,并且 (2),它似乎不适用于我的数据。
这是函数(取自d3.js moving average with previous and next data values):
var movingWindowAvg = function(arr, step) {
return arr.map(function(_, idx) {
var wnd = arr.slice(idx - step, idx + step + 1);
var result = d3.sum(wnd) / wnd.length; if (isNaN(result)) { result = _; }
return result;
});
};
逐行:
var movingWindowAvg = function(arr, step) {
使用一维数组和 step 的参数创建一个函数,该函数决定您对每个单独的平均点使用多少值。
return arr.map(function(_, idx) {
将数组映射到(什么?),我知道_ 是通配符运算符,就像来自OCaml,而idx 是id?
var wnd = arr.slice(idx - step, idx + step + 1);
似乎wnd 代表窗口,因此找到数据的子集用作第一个移动平均点的平均窗口。
var result = d3.sum(wnd) / wnd.length; if (isNaN(result)) { result = _; }
实际计算平均值。
总体: 我想我的大问题是,通过这个函数,它似乎是为了找到一维数组的移动平均值。为了使用它,我是否必须将我的数据转换为一维数组,或者有没有办法稍微改变函数本身?我很难更改函数,因为它在语法上有点混乱。
【问题讨论】:
标签: javascript jquery d3.js moving-average