当前位置: 代码迷 >> JavaScript >> 操纵杆
  详细解决方案

操纵杆

热度:83   发布时间:2023-06-05 14:12:01.0

是的,这就是我的数据:

{
    "chartData":[
        {
            "vId":"307",
            "vNm":"Alejandro Rivera Ulloa",
            "values":[
                {"period":"2015-01","amount":37,"id":132},
                {"period":"2015-02","amount":38,"id":133},
                {"period":"2015-03","amount":33,"id":134}
            ]
        },
        {
            "vId":"308",
            "vNm": "Daniel Torres",
            "values": [
                {"period":"2015-01","amount":41,"id":135},
                {"period":"2015-02","amount":41,"id":136},
                {"period":"2015-03","amount":41,"id":137}
            ]
        },
        {
            "vId":"309",
            "vNm": "Pablo Alvarez Garcia",
            "values":[
                {"period":"2015-01","amount":16,"id":138},
                {"period":"2015-02","amount":17,"id":139},
                {"period":"2015-03","amount":14,"id":140}
            ],
        },
        {
            "vId":"391",
            "vNm":"Janette Avalos de Conte",
            "values":[
                {"period":"2015-01","amount":28.5,"id":141},
                {"period":"2015-02","amount":29,"id":142},
                {"period":"2015-03","amount":27.5,"id":143}
            ]
        }
    ]
}

现在,我想让此图(用不同的数据制成)的条形为数据中每个“值”的总和。

我之所以没有在数据本身内部编译值,是因为相同的数据稍后将用于基于该数据的另一张图。

因此,本质上。 我的问题是:如何使条形图成为每个“值”的总和的高度?

如果有人需要澄清,请发表评论。

我尝试做一个d3.sum,但这给了我一般的总和,并且迭代一个总和数组并将每个总和推入一个数组并不是在D3公园散步。

以下函数以您注释的方式汇总数据:

var cookData = function(data){
    var keys = {};
    var result = [];
    var values = data.map(function(d) { return d.values; });
    values.forEach(function (value){
        value.forEach(function (v) {
            if (keys[v.period]) {
                keys[v.period] += v.amount;    
            } else {
                keys[v.period] = v.amount;    
            }
        });
    })
    Object.keys(keys).forEach(function (key) {
        result.push({date: key, amount: keys[key]});
    });
    return result;
};

你可以很容易与您的柱状图(详见上使用此功能, 对如何创建条形图的例子)。

  相关解决方案