在dc.js中对多个移动平均值进行分组

时间:2017-11-17 19:25:46

标签: d3.js dc.js reductio

我有一个dc.js示例,我想在数据集的两个不同窗口上计算移动平均值并对它们进行分组。最后,我还要将两个移动平均线之间的比率与它们分组,以便我可以使用密钥访问它们。

我已经掌握了如何使用reductio进行单次移动平均,但我不确定如何同时进行其中两次,比例并显示所有三种(MA1,MA2,比率)在图中。

以下是我如何做每个独立的MA:

    var date_array = [];
    var mapped_date_array = [];

    var activities_infinity = activityDistanceByDayGroup.top(Infinity);
    var i = 0;
    for (i=0; i < activities_infinity.length; i++) {
        date_array.push(activities_infinity[i].key);
    }
    date_array.sort(function (date1, date2) {
        if (date1 > date2) return 1;
        if (date1 < date2) return -1;
    })
    mapped_date_array = date_array.map(function(e) { return e.toDateString(); 
    });

    //      For Chronic Load
    var cLoadMovingAvg = activityByDay.groupAll();
    cReducer = reductio().groupAll(function(record) {
        var idx = mapped_date_array.indexOf(record.dtg.toDateString());
        if (record.dtg < date_array[9]) {
            return [date_array[idx]];
        } else {
            var i = 0;
            var return_array = [];
            for (i = 9; i >= 0; i--) {
                return_array.push(date_array[idx - i]);
            }
            return return_array;
        }
    }).count(true).sum(dc.pluck('Distance')).avg(true)(cLoadMovingAvg); 

    //      For Acute Load
    var aLoadMovingAvg = activityByDay.groupAll();
    aReducer = reductio().groupAll(function(record) {
        var idx = mapped_date_array.indexOf(record.dtg.toDateString());
        if (record.dtg < date_array[3]) {
            return [date_array[idx]];
        } else {
            var i = 0;
            var return_array = [];
            for (i = 3; i >= 0; i--) {
                return_array.push(date_array[idx - i]);
            }
            return return_array;
        }
    }).count(true).sum(dc.pluck('Distance')).avg(true)(aLoadMovingAvg);

jsFiddle在这里:http://jsfiddle.net/gasteps/hLh5frc8/2/

非常感谢您对此提供任何帮助!

0 个答案:

没有答案