2013-03-04 42 views
0

我目前正在開展D3數據可視化的第一步。到目前爲止,D3教程已經幫了我很多。餅圖教程http://bl.ocks.org/mbostock/3887235雖然沒有進一步解釋餅圖的必要數據結構。D3餅圖的數據結構

我的數據比示例的標籤/值結構更復雜。我有存儲在JSON特定良好的全年總進口數據和進口數據:

var data = [{"year":"2001","total_import":"100000","import_specific_good":"25000"},{"year":"2002",...}]; 

如果我理解正確的教程餡餅()在每個不同對象的同一條目進行迭代。

如果我需要SAME對象的特定不同值,該怎麼辦?

我對一個餅圖不感興趣,它顯示所有年度進口總量的份額,但特定商品年度進口量佔年度進口總量的一部分。我的值是1.(total_import - import_specific_good)和2. import_specific_good。

我建議的數據結構是否適合我想要做的事情?或者我必須重組所有東西,以便每年的值都存儲在一個單獨的變量中?

var data_2001 = [{"label":"Total Import","value":"100000"},{"label":"Import of Specific Good","value":"25000"}]; 

var data_2002 = [{"label": ...}]; 

回答

0

您不必使用特定的數據結構 - 你可以(而且將需要無論如何)修改的例子,所以你可以使用任何你喜歡的!所以你可以使用你的第一個JSON就好了。由於您只有2個值可以顯示,因此您可以簡單地構建該結構以實時傳送至.data()

// for pie chart 
...data([json[index].total_import - json[index].import_specific_good, 
     json[index].import_specific_good])... 
... 
// similarly for the labels 
在你的JSON

我勸來存儲數字作爲數字(例如不帶引號),雖然 - 否則,你就必須將它們轉換爲數字的JavaScript。

+0

這對我來說關於data()函數是有意義的。但是'var pie = d3.layout.pie() .sort(null) .value(function(d){return什麼是這裏?;});'?我該怎麼處理pie()函數? PS:感謝關於字符串/整數的提示。 – 2013-03-04 14:32:15

+0

如果你用上面的數據(即實際的數字)調用'pie()',你不需要指定'.value()'。 – 2013-03-04 14:36:40

+0

謝謝!那就是訣竅。由於我有很多數據,現在我可以迭代我的原始JSON併爲每年創建一個餅圖。很方便! – 2013-03-04 15:10:26