我试图找出在d3中访问嵌套json数据的最佳方法。
所以我的数据看起来像这样:
{
"Florida":{"New York": "yellow",
"New Jersey": "blue",
"Pennsylvania": "green",
etc..
我的d3.select函数看起来像:
.selectAll("path")
.style('fill', function(d){
return jsondata.state[d.properties.NAME];
当然,这里的var state是一个变量,应该引用" Florida",但不是。
我看待它的方式有两种:
使用一些概述的in this post解析方法。即,.get()方法
以某种身份使用d3.nest()并将我的数据汇总到.style函数之前的可访问对象中。
最好的方法是什么?
答案 0 :(得分:1)
您可以使用序数比例,并根据所选的任何状态及其数据更改其域和范围。
创建没有域或范围的比例:
var color = d3.scale.ordinal();
然后选择状态时,获取其名称,并获取其对应对象的d3.entries
:
var entries = d3.entries(yourData[selectedState]);
然后将比例的域和范围分别设置为键和值:
color.domain(entries.map(function(d) {return d.key;}));
color.range(entries.map(function(d) {return d.value;}));
最后,选择所有状态路径并使用比例设置填充:
.selectAll('path').attr('fill', function(d) {return color(d.properties.NAME)})