2014-04-01 67 views
0

我試圖將以下數據結構傳遞到D3,特別是餅圖佈局。將包含數組的對象傳遞給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

你是兩個代碼片段似乎並沒有在一起,所以這可能不是你想要的。更新完整,簡化(除了這個問題以外的工作)程序。

即表示:value accessor function of the pie layout是呼籲您的陣列中的每個元素訪問表示圓形切片的大小的數量,而不是數據對象提取陣列上的功能。

在調用pie函數之前,您必須自己從完整的數據對象中提取數組。例如,如果你的數據對象綁定到單獨的餅圖<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. 
+0

我會爲後人更新的例子,但是這是我缺少邏輯的確切位。 –