带有附加元素的新数组无法可视化

时间:2016-04-14 12:14:39

标签: javascript d3.js svg

我有以下图表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/

但是,图表无法正确显示新数据。

任何帮助将不胜感激, 感谢

1 个答案:

答案 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的数据。

我已使用MN对其进行了更改,并且工作正常:https://jsfiddle.net/3860zcc3/