2013-03-04 65 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