Построение цветовой карты с почтовыми индексами на R или Python - PullRequest
29 голосов
/ 18 сентября 2009

У меня есть некоторые демографические и фирмыографические данные США.
Я хотел бы построить области почтового индекса в штате или регионе меньшего размера (например, в городе). Каждая область будет помечена цветом и / или текстом, характерным для этой области. Вывод будет похож на http://maps.huge.info/, но а) с аннотированным текстом; б) вывод PDF; в) скриптовый на R или Python.

Есть ли какой-нибудь пакет и код, который позволяет мне это делать?

Ответы [ 8 ]

37 голосов
/ 18 сентября 2009

Я предполагаю, что вы хотите статические карты.

alt text
(источник: eduardoleoni.com )

1) Получите шейп-файлы границ zip и state границ на census.gov:

2) Используйте функцию plot.heat, которую я разместил в этом ТАКОМ вопросе .

Например (предполагается, что у вас есть шейп-файлы Мэриленда в подкаталоге карты):

library(maptools)
##substitute your shapefiles here
state.map <- readShapeSpatial("maps/st24_d00.shp")
zip.map <- readShapeSpatial("maps/zt24_d00.shp")
## this is the variable we will be plotting
zip.map@data$noise <- rnorm(nrow(zip.map@data))
## put the lab point x y locations of the zip codes in the data frame for easy retrieval
labelpos <- data.frame(do.call(rbind, lapply(zip.map@polygons, function(x) x@labpt)))
names(labelpos) <- c("x","y")                        
zip.map@data <- data.frame(zip.map@data, labelpos)
## plot it
png(file="map.png")
## plot colors
plot.heat(zip.map,state.map,z="noise",breaks=c(-Inf,-2,-1,0,1,2,Inf))
## plot text
with(zip.map@data[sample(1:nrow(zip.map@data), 10),] , text(x,y,NAME))
dev.off()
9 голосов
/ 18 сентября 2009

Есть много способов сделать это в R (см. пространственное представление ); многие из них зависят от пакета "maps" .

3 голосов
/ 18 сентября 2009

У кого-то может быть что-то более прямолинейное для вас, но мне показалось, что «Мешапы данных в R» О'Рейли очень интересны ... отчасти это пространственное отображение домашних аукционов выкупа.

http://oreilly.com/catalog/9780596804770/

2 голосов
/ 09 декабря 2009

В Python вы можете использовать шейп-файлы из переписи США вместе с пакетом basemap. Вот пример заполнения состояний в соответствии с населением.

1 голос
/ 18 сентября 2009

Даниэль Левин на TechCrunch Trends сделал хорошие вещи с пакетом maps в R. У него также есть код, доступный на его сайте.

Предложение Пола о рассмотрении Обработки - которое Бен Фрай использовал для создания zipdecode - также является хорошим, если вы готовы изучать (Java-подобный) новый язык.

1 голос
/ 18 сентября 2009

Существует богатая и сложная серия пакетов в R для построения, анализа и других функций, связанных с ГИС. Одним из способов начать работу является представление задачи CRAN на Spatial Data : Это сложный, а иногда и загадочный мир, и для его понимания требуется определенная работа.

Если вы ищете бесплатное, очень функциональное картографическое приложение, могу ли я предложить:

MapWindow (mapwindow.com)

0 голосов
/ 18 сентября 2009

Проверьте этот превосходный онлайн-инструмент визуализации от IBM http://manyeyes.alphaworks.ibm.com/manyeyes/

РЕДАКТИРОВАТЬ К вашему сведению, ManyEyes использует набор инструментов Prefuse для визуализации для некоторых своих целей. Несмотря на то, что это основанный на Java фреймворк, они также предоставляют инструмент Flash / ActionScript для Интернета.

0 голосов
/ 18 сентября 2009

В зависимости от вашего приложения, можно использовать что-то вроде этого:

http://googlemapsmania.blogspot.com/2006/07/new-google-maps-us-zip-code-mashups.html

Для отображения ваших данных. Если это не совсем то, что вы хотели, вы можете получить необработанные шейп-файлы с почтовым индексом census.gov и сделать это вручную, что довольно сложно.

Кроме того, если вы еще этого не видели, это отличный способ взаимодействия с похожими данными, и он может предложить несколько указателей:

http://benfry.com/zipdecode/

...