nvd3饼图说Uncaught TypeError:无法调用方法' map'未定义的

时间:2013-06-17 21:57:43

标签: javascript d3.js nvd3.js

以下是plunker - http://plnkr.co/edit/pXitfqb8K2IbxOHXw0uL?p=preview

是否记录了正确的值,但没有构建饼图 相反,我可以在日志中看到以下内容

nvd pie -  {"values":[{"parent":"Food","amount":116.1},{"parent":"Home","amount":670.14},{"parent":"Travel","amount":365.24},{"parent":"Taxes","amount":31.240000000000002},{"parent":"Entertainment","amount":13.24}]} script.js:166
Uncaught TypeError: Cannot call method 'map' of undefined nv.d3.js:9623

如何解决此问题?

3 个答案:

答案 0 :(得分:4)

从nv.d3.js看一下第9623行,你会发现在数组的第一个元素上调用了map方法,你的数据就是一个对象。

您需要做的是将值封装在1个元素数组中:

var data = [{ 
  key : "",
  values : [{"parent":"Food","amount":116.1},{"parent":"Home","amount":670.14},{"parent":"Travel","amount":365.24},{"parent":"Taxes","amount":31.240000000000002},{"parent":"Entertainment","amount":13.24}] 
}];

答案 1 :(得分:4)

我挣扎了一段时间,主要是因为我从nvd3.org网站上的实例开始。

事实证明,实际网站上的示例中的数据格式与核心nvd3下载捆绑的示例中的数据格式不同。

在下载的pie.html示例中,数据指定如下:

var testdata = [
{ 
  key: "One",
  y: 5
},
{ 
  key: "Two",
  y: 2
},
{ 
  key: "Three",
  y: 9
}
];

然后通过它传递数据包裹在一个未命名/键控数组中......

d3...datum([testdata])....

这种格式适用于我。

答案 2 :(得分:0)

经过几个小时的挣扎,我能够解决这个问题。

请查看http://plnkr.co/edit/qJnZzBS4ZOUtD2q9FV11?p=preview了解其运作方式