我有以下图表https://jsfiddle.net/r96upg74/5/
我创建了一个名为data的新数组,其中包含一个元素' Total'最后使用以下代码:
var value0Sum = 0,
value1Sum = 0;
value0Sum = d3.sum(data, function(d){return d[values[0]];});
value1Sum = d3.sum(data, function(d){return d[values[1]];});
data = function (array) {
r = array.map(function (d) {
return { id: d.id, value1: d[values[0]], value2: d[values[1]] }}
);
return r.concat([{id:"Total", value1: value0Sum, value2: value1Sum}]);
}(data);
结果是:https://jsfiddle.net/r96upg74/7/
但是,图表无法正确显示新数据。
任何帮助将不胜感激, 感谢
答案 0 :(得分:1)
您的代码中存在一些混淆。
这个循环非常奇怪:
data.forEach(function(d) {
for (var i = 0; i < values.length; i++) {
d.value = +d[values[i]];
return d;
}
});
您在d.value
中分配内容然后停止循环,因此您永远不会超越i=0
我删除了它,因为你不需要它。
然后问题在于,在您的第二个小提琴中,您将使用键id, M, N
的数据转换以前具有键id, value1, value2
的数据。
我已使用M
和N
对其进行了更改,并且工作正常:https://jsfiddle.net/3860zcc3/