问题描述
是的,这就是我的数据:
{
"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公园散步。
1楼
jarandaf
1
已采纳
2015-07-30 21:04:06
以下函数以您注释的方式汇总数据:
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;
};
你可以很容易与您的柱状图(详见上使用此功能, 对如何创建条形图的例子)。