使用变量访问d3中的嵌套json密钥

时间:2014-07-22 16:28:20

标签: javascript json d3.js nested

我试图找出在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",但不是。

我看待它的方式有两种:

  1. 使用一些概述的in this post解析方法。即,.get()方法

  2. 以某种身份使用d3.nest()并将我的数据汇总到.style函数之前的可访问对象中。

  3. 最好的方法是什么?

1 个答案:

答案 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)})