D3.js堆积了对象数组的条形图

时间:2015-04-13 19:54:38

标签: d3.js

我想创建一个堆积条形图,其中x轴是cat_desc,y轴是met1数组对象。我在这里有一个有效的代码http://jsfiddle.net/aunbc2td/

但是我坚持这个:“未捕获的TypeError:无法读取未定义的属性'y1'” 问题似乎出现在下面的代码段中:任何帮助?

data.cat[0].met1.forEach(function(d) {      
         var y0 = 0;     
         d.catDesc = color.domain().map(function(name) {  
      return {name: name, y0: y0/sum, y1: (y0 += +d[name])/sum }; });  
       d.total = d.catDesc[d.catDesc.length - 1].y1;   
    console.log(d.catDesc);   
});

1 个答案:

答案 0 :(得分:0)

color.domain()对于序数比例是空的,直到它们被重复使用。所以:

color.domain(); // will be []
color('one');
color('two');
color.domain(); // will be ['one', 'two']

这就是为什么你的功能失败,d.catDesc将被设置为[]因此d.catDesc[d.catDesc.length - 1]将被定义为未定义,因此它不会失败有一个y1。这里的帮助就是耐心,慢慢地踩过这些东西,理解你在写什么。