我试图将以下数据结构传递给D3,特别是饼图布局。
var myData = {
myValue : "foo",
myArray : [
{animal : "cat", noise : "meow", cost : 200},
{animal : "dog", noise : "woof", cost : 300}
]
}
我无法使用点表示法将数组部分传递到d3,例如:
//Passing of data to pie omitted
var pie = d3.layout.pie()
.value(function(d){
return d.myArray.cost;
});
有人可以提供适用于此用例的bl.ocks示例或教程吗?
答案 0 :(得分:1)
你的两段代码片段似乎并不在一起,所以这可能不是你想要的。使用完整,简化(以及除此问题之外的工作)程序进行更新。
那就是说:value accessor function of the pie layout是在数组的每个元素上调用的函数,用于访问表示该饼图片大小的数字,而不是要提取的数据对象数组。
在调用pie函数之前,您必须自己从完整的数据对象中提取数组。例如,如果您的数据对象绑定到单独的pieChart <g>
元素,您将使用:
var pieSlices = pieChart.selectAll("path.pieSlices")
.data( function(d){return pie(d.array);} );
//`d` in a data function is the data joined to the parent;
//the function must return an array of data for children.