2013-07-14 2 views
0

Я пытался создать D3 choropleth в соответствии с this example. Я все понял, кроме как создать unemployment.tsv, который выглядит следующим образом:Создать d3 choropleth dataset

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

После дальнейшего копания, я вижу, что идентификаторы ссылки на некоторые d3 объекты графа. Мой вопрос заключается в том, есть ли простой способ установить значения идентификаторов этих идентификаторов, или мне придется делать это вручную?

Если возможно, я ищу способ такой простой, как Google Charts.

ответ

4

Файл us.json используется для рисования карты содержит информацию о чертах друг графствах и их FIPS code:

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

Каждая строка unemployment.tsv представляет собой единый округ, содержащий его FIPS код и уровень безработицы. Когда файл будет загружен, он преобразуется из массива объектов:

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

к объекту с ключом в качестве округа идентификатора и скорости в качестве значения:

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

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

(The +d.rate, как слепки строки безработицы как числа.)

как только это будет сделано, окраска каждого округа просто, идентификатор только фигуры, чтобы найти соответствующий уровень безработицы в rateById и преобразовать это число в цвет со шкалой на color.

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

Для более непосредственно ответить на ваши вопросы: вы, вероятно, хотите, чтобы code уровень округа * данные с кодом страны FIPS коды и использовать, чтобы раскрасить вашу карту. Если вы не работаете с данными графства, вы можете попробовать преобразовать его (отображение lat/long или city/state в графство) или полностью использовать другой вид карты (для карты мира см. this example и нижеприведенные комментарии).

* У меня нет какого-либо фона ГИС - каждый раз, когда я пытаюсь это сделать, в конечном итоге я использую старый код FIPS -> таблицу имен графства и должен исправить пару вручную; вероятно, есть лучший исходный файл на веб-сайте NIST, который я не смог найти.

+0

Спасибо за ваш очень подробный ответ. Кроме того, что я работаю над международными данными, показывающими страны. Какие-либо предложения? –

+0

http://stackoverflow.com/questions/13094907/how-to-create-a-choropleth-of-the-world-using-d3 карта мира: https://github.com/mbostock/topojson/blob /master/examples/world-50m.json –

+0

У этого примера есть ссылка: http://stackoverflow.com/questions/12648032/geochart-in-d3-js http://bl.ocks.org/clayzermk1/ 4121134 В основном, те же идеи, что и выше, но названия стран используются для объединения данных на карту вместо кодов графства. –

Смежные вопросы