Построение цветной карты с почтовыми индексами на R или Python
Вопрос
У меня есть кое-какие демографические и фирмографические данные по США.
Я хотел бы отобразить области почтового индекса в штате или меньшем регионе (напримергород).Каждая область будет помечена цветом и / или текстом, специфичным для этой области.Результат был бы похож на http://maps.huge.info/ но а) с аннотированным текстом;б) вывод в формате PDF;c) с возможностью написания сценариев на R или Python.
Есть ли какой-нибудь пакет и код, которые позволяют мне это сделать?
Решение
Я предполагаю, что вы хотите статические карты. Р>
(источник: eduardoleoni.com )
1) Получите шейп-файлы zip границ и < a href = "http://www.census.gov/geo/www/cob/st2000.html" rel = "nofollow noreferrer"> состояние границ на census.gov:
2) Используйте функцию plot.heat, которую я опубликовал в этом SO вопросе . р>
Например (предполагается, что у вас есть шейп-файлы maryland в подкаталоге map):
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()
Другие советы
Есть много способов сделать это в R (см. пространственный вид);многие из этих зависит от пакета "карты".
Посмотри на это классный пример выборов 2004 года в США.В конечном итоге это выглядит вот так:
Вот немного уродливый пример модели для этого используется пакет "maps" с "решеткой".
- Эндрю Гельман сделал несколько очень хороших сюжетов, подобных этому.Смотрите, например, это сообщение в блоге о красных штатах / синих штатах и этот последующий пост.
Вот очень простой пример использование пакета "gmaps", на котором показана карта арестов по штатам для арестов на 100 000 человек за убийство:
require(gmaps) data(USArrests) attach(USArrests) grid.newpage() grid.frame(name="map") grid.pack("map",USALevelPlot(states=rownames(USArrests),levels=Murder,col.fun=reds),height=unit(1,'null')) grid.pack("map",gradientLegendGrob(at=quantile(Murder),col.fun=reds),side="bottom",height=unit(.2,'npc')) detach(USArrests)
У кого-то может быть что-то более прямолинейное для вас, но мне показалось, что «Мешапы данных в R» О'Рейли очень интересны ... отчасти это пространственное отображение домашних аукционов выкупа.
В Python вы можете использовать шейп-файлы из переписи населения США вместе с пакетом basemap
. Вот пример заполнения состояний в зависимости от населения. р>
В R имеется обширная и сложная серия пакетов для построения, анализа и других функций, связанных с ГИС. Одним из способов начать работу является представление задачи CRAN в Пространственные данные : Это сложный, а иногда и загадочный мир, и для его понимания требуется определенная работа. Р>
Если вы ищете бесплатное, очень функциональное картографическое приложение, могу ли я предложить:
MapWindow (mapwindow.com)
Дэниел Левин из TechCrunch Trends сделал отличные вещи с помощью пакета maps
в R. У него также есть код, доступный на его сайте.
Предложение Пола взглянуть на процессинг - который Бен Фрай использовал для создания zipdecode - также хорошо, если вы готовы изучать (Java-подобный) новый язык.
В зависимости от вашего приложения, можно использовать что-то вроде этого:
http: // googlemapsmania .blogspot.com / 2006/07 / New-Google-карты, мы-зип-код-mashups.html
Для сопоставления ваших данных. Если это не совсем то, что вы хотели, вы можете получить необработанные шейп-файлы почтового индекса с сайта census.gov и сделать это вручную, что довольно сложно.
Кроме того, если вы еще этого не видели, это отличный способ взаимодействия с похожими данными, и он может предложить несколько указателей:
Оцените этот превосходный онлайн-инструмент визуализации от IBM http://manyeyes.alphaworks.ibm.com/manyeyes/
РЕДАКТИРОВАТЬ К вашему сведению, ManyEyes использует набор инструментов для предварительной визуализации для некоторых своих а именно Несмотря на то, что это основанный на Java фреймворк, они также предоставляют инструмент Flash / ActionScript для Интернета.