如何解析JSON文件以将数据绑定到d3等值区域映射

时间:2013-08-15 20:37:40

标签: json d3.js

我正在尝试从JSON文件中获取数据并将其链接到我的geoJSON文件,以创建一个区域颜色绑定到“金额”值的等值区域图,但我也想要一个相应的“注释”值当我将鼠标移到那个县时,被绑定到一个div。

当我的counties.json数据采用以下形式时,http://bl.ocks.org/eoiny/6244102处的代码将生成一个等值区域地图:

"Carlow":3,"Cavan":4,"Clare":5,"Cork":3,

但是当我尝试使用以下形式时,事情变得棘手:

{
"id":"Carlow",
"amount":11,
"comment":"The figures for Carlow show a something." },

我无法理解如何加入“id”:来自counties.json的“Carlow”和来自ireland.json的“id”:“Carlow”路径,同时可以访问在counties.json中的其他值,即“金额”和“评论”。

对于我不善言辞的问题道歉,但如果有人能指出我的例子或参考,我可以查看那将是很棒的。

1 个答案:

答案 0 :(得分:1)

我会在加载数据时预处理数据,以便在量化函数中更容易查找。基本上,用以下代码替换:data = json;

data = json.reduce(function(result, county) {
    result[county.id] = county;
    return result;
}, {});

然后在你的量化函数中,得到这样的数量:

function quantize(d) {
    return "q" + Math.min(8, ~~(data[d.id].amount * 9 / 12)) + "-9";
}

预处理的作用是转换此数组(通过索引轻松访问):

[{id: 'xyz', ...}, {id: 'pdq', ...}, ...]

使用县键进入此对象(可通过县ID轻松访问):

{'xyz': {id: 'xyz', ...}, 'pdq': {id: 'pdq', ...}, ...}

以下是工作要点:http://bl.ocks.org/rwaldin/6244803