マップの描画に使用されるファイルには、各郡の概要とFIPS コードus.json
に関する情報が含まれています。
{"type":"Polygon","arcs":[[250,-204,-17]],"id":30047}
の各行はunemployment.tsv
、FIPS コードと失業率を含む 1 つの郡を表します。ファイルがロードされると、オブジェクトの配列から変換されます。
> unemployment
[{id: '1001', rate: '.097'},
{id: '1004', rate: '.091'},
{id: '1005', rate: '.134'},
... ]
郡IDとしてのキーと値としての率を持つオブジェクトに:
var rateById = {};
unemployment.forEach(function(d) { rateById[d.id] = +d.rate; });
> rateById
{1001: .097,
1004: .091,
1005: .134}
( +d.rate
as は、失業率の文字列を数値としてキャストします。)
それが完了したら、各郡の色付けは簡単です。対応する失業率を見つけ、その数値をスケールrateById
で色に変換するための図形の ID だけです。color
.style("fill", function(d) { return color(rateById[d.id]); });
質問にもっと直接的に答えるには、郡レベル*のデータを国の FIPS コードでコーディングし、それを使用してマップに色を付けたいと思うでしょう。郡データで作業していない場合は、変換 (緯度/経度または都市/州を郡にマッピング) を試すか、別の種類の地図を完全に使用することができます (世界地図については、この例と以下のコメントを参照してください)。
*私には GIS のバックグラウンドがまったくありません。これを実行しようとするたびに、古い FIPS コードを使用することになります -> 郡名ルックアップ テーブルを使用し、手動でいくつか修正する必要があります。NIST の Web サイトには、私が見つけられなかったより良いソース ファイルがおそらくあります。