【发布时间】:2015-07-10 14:20:33
【问题描述】:
我想使用d3.nest() 为 JSON 创建一个键值对。
原始 JSON 如下所示:
[
{
"Country": "Mexico",
"Climate": 100,
"Safety Index": 50,
"Life Expectancy": 80,
"Corruption": 30,
"Per Capita Income": 20
},
{
"Country": "UK",
"Climate": 70,
"Safety Index": 80,
"Life Expectancy": 70,
"Corruption": 70,
"Per Capita Income": 80
},
{
"Country": "US",
"Climate": 80,
"Safety Index": 70,
"Life Expectancy": 90,
"Corruption": 70,
"Per Capita Income": 80
}
]
我想把它变成这样:
[
{"key": "Mexico", "value":
[
{ "key": "Climate", "value": 100 },
{ "key": "Safety Index", "value": 50 },
{ "key": "Life Expectancy", "value": 80 },
{ "key": "Corruption", "value": 30 },
{ "key": "Per Capita Income", "value": 20 }
]},
{"key": "UK", "value":
[
{ "key": "Climate", "value": 70 },
{ "key": "Safety Index", "value": 80 },
{ "key": "Life Expectancy", "value": 70 },
{ "key": "Corruption", "value": 70 },
{ "key": "Per Capita Income", "value": 80 }
]},
{"key": "US", "value":
[
{ "key": "Climate", "value": 80 },
{ "key": "Safety Index", "value": 70 },
{ "key": "Life Expectancy", "value": 90 },
{ "key": "Corruption", "value": 70 },
{ "key": "Per Capita Income", "value": 80 }
]}
]
我的尝试:
var nest = d3.nest()
.key(function(d) { return d.Country; })
.entries(data);
我的问题非常基本,因为我是 D3 新手。我应该如何改变 D3 中 JSON 的结构?
编辑
这是根据与此示例类似的不同类别为每个国家/地区创建单独的条形图 (http://bl.ocks.org/mbostock/5872848)。如果有更好的方法我应该考虑这个,请告诉我。
【问题讨论】:
-
为什么要改造呢?向 D3 提供数据的最简单方法是以类似表格的格式提供数据,就像您的原始 JSON 一样。此外,添加“key”和“value”键有点多余,因为这些信息很容易从原始格式中提取出来。
-
查看编辑。例如, d3.keys(data[0]) 会引入我需要省略的“Country”。您能否详细说明如何操作?
-
为什么需要省略“国家”的值?如果您查看您尝试修改的代码示例,该代码也具有“国家/地区”的值。
-
感谢您的推荐。我明白你在说什么。这是一种更好的方法!
-
我对我的回答做了一些修改。如果还有什么可以帮助您的,请告诉我。
标签: javascript json d3.js