将包含数组的对象传递给D3

时间:2014-04-01 20:25:51

标签: d3.js

我试图将以下数据结构传递给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示例或教程吗?

1 个答案:

答案 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.