我想创建一个堆积条形图,其中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);
});
答案 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
。这里的帮助就是耐心,慢慢地踩过这些东西,理解你在写什么。