Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript D3饼图的数据结构_Javascript_Json_D3.js_Pie Chart - Fatal编程技术网

Javascript D3饼图的数据结构

Javascript D3饼图的数据结构,javascript,json,d3.js,pie-chart,Javascript,Json,D3.js,Pie Chart,我目前正在进行D3数据可视化的第一步。到目前为止,D3教程对我帮助很大。但是,饼图教程没有进一步解释饼图所需的数据结构 我的数据比示例的标签/值结构更复杂。我将年度总进口数据和特定货物的进口数据存储在JSON中: var data = [{"year":"2001","total_import":"100000","import_specific_good":"25000"},{"year":"2002",...}]; 如果我正确理解了教程,pie()将迭代每个不同对象的相同条目 如果我需要同

我目前正在进行D3数据可视化的第一步。到目前为止,D3教程对我帮助很大。但是,饼图教程没有进一步解释饼图所需的数据结构

我的数据比示例的标签/值结构更复杂。我将年度总进口数据和特定货物的进口数据存储在JSON中:

var data = [{"year":"2001","total_import":"100000","import_specific_good":"25000"},{"year":"2002",...}];
如果我正确理解了教程,pie()将迭代每个不同对象的相同条目

如果我需要同一对象的特定不同值怎么办

我对一个显示所有年度总进口量的饼不感兴趣,而是对一种特定商品的年度进口量作为年度总进口量的一部分感兴趣。我的价值观是1。(总进口-进口特定货物)和2。进口商品

我提出的数据结构是否符合我的目标?或者我必须重新构造所有内容,以便将每年的值存储在单独的变量中

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

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

您不必使用特定的数据结构——您可以(而且无论如何都需要)修改示例,以便可以使用任何您喜欢的内容!因此,您可以很好地使用第一个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中的数字。

这对我来说对于data()函数很有意义。但是关于
var pie=d3.layout.pie().sort(null).value(函数(d){返回这里的内容?;})?我如何处理pie()函数?PS:感谢您提供有关字符串/整数的提示。如果您使用上述数据(即实际数字)调用
pie()
,则无需指定
.value()
。谢谢!这就成功了。因为我有很多数据,我现在可以迭代我的原始json,并为每年创建一个饼图。非常方便!仅供理解:我提供给pie()的所有值都将相加并缩放到100%/360度,对吗?这意味着pie()中的值表示我的输入域,而360度表示我的输出范围。我没弄错吧?是的。它基本上是一个方便的函数,除其他外,它提供了以下功能。