0

我一直在尝试根据这个例子创建一个 D3 choropleth 。除了如何创建如下unemployment.tsv所示的内容之外,我已经了解了所有内容:

id      rate
1001    .097
1003    .091
1005    .134
1007    .121
...     ...

进一步挖掘后,我看到 id 是对某些 d3 图形对象的引用。我的问题是是否有一种简单的方法来设置这些 id 的 id 值,还是我必须手动设置?

如果可能的话,我正在寻找一种像Google Charts一样简单的方法。

4

1 回答 1

4

用于绘制地图的us.json文件包含有关每个县的轮廓及其FIPS 代码的信息:

{"type":"Polygon","arcs":[[250,-204,-17]],"id":30047}

每行unemployment.tsv代表一个县,包含其 FIPS 代码和失业率。加载文件时,它是从对象数组转换而来的:

> unemployment
[{id: '1001', rate: '.097'},
 {id: '1004', rate: '.091'},
 {id: '1005', rate: '.134'},
 ... ]

以 key 为县 id 和 rate 为值的对象:

var rateById = {};
unemployment.forEach(function(d) { rateById[d.id] = +d.rate; });

> rateById
{1001: .097,
 1004: .091,
 1005: .134}

+d.rateas 将失业字符串转换为数字。)

完成后,为每个县着色很简单,只需使用形状的 id 即可找到相应的失业率rateById并将该数字转换为带有color刻度的颜色。

.style("fill", function(d) { return color(rateById[d.id]); });

为了更直接地回答您的问题:您可能希望使用国家 FIPS代码对您的县级*数据进行编码,并使用它为您的地图着色。如果您不使用县数据,您可以尝试转换它(将纬度/经度或城市/州映射到县)或完全使用另一种地图(对于世界地图,请参阅此示例和以下评论)。

*我没有任何 GIS 背景 - 每次我尝试这样做时,我最终都会使用旧的 FIPS 代码 -> 县名查找表,并且必须手动更正几个;NIST 网站上可能有更好的源文件,但我无法找到。

于 2013-07-14T15:19:52.080 回答