Отображение цветной карты с почтовыми индексами в R или Python
У меня есть демографические данные и данные по США.
Я хотел бы построить области zipcode в состоянии или в меньшем регионе (например, в городе). Каждая область будет аннотирована цветом и/или текстом, специфичным для этой области. Результат будет похож на http://maps.huge.info/, но a) с аннотированным текстом; б) выход в формате pdf; c) сценарий в R или Python.
Есть ли какой-нибудь пакет и код, который позволяет мне это делать?
Ответы
Ответ 1
Я предполагаю, что вы хотите статические карты.
(источник: eduardoleoni.com)
1) Получите шейп файлы границ почтового индекса и государственных границ на census.gov:
2) Используйте функцию plot.heat, которую я написал в этом вопросе.
Например (предполагается, что у вас есть шейп файлы 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
[email protected]$noise <- rnorm(nrow([email protected]))
## 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([email protected], function(x) [email protected])))
names(labelpos) <- c("x","y")
[email protected] <- data.frame([email protected], 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([email protected][sample(1:nrow([email protected]), 10),] , text(x,y,NAME))
dev.off()
Ответ 2
Есть много способов сделать это в R (см. Пространственное представление); многие из них зависят от пакета "maps".
-
Проверьте этот классный пример выборов 2004 года в США. В конечном итоге это выглядит так: ![alt text]()
-
Вот немного уродливый пример модели, которая использует пакет "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)
Ответ 3
У кого-то может быть что-то более прямое для вас, но я нашел O'Reilly 'Data Mashups in R' очень интересным... отчасти, это пространственное картографирование домашних аукционов выкупа.
http://oreilly.com/catalog/9780596804770/
Ответ 4
В Python вы можете использовать шейп файлы из переписи населения США вместе с пакетом basemap
. Вот пример заполнения штатов по населению.
Ответ 5
Существует богатая и сложная серия пакетов в R для построения графика, анализа и других функций, связанных с ГИС. Одно место для начала - просмотр задачи CRAN на Пространственные данные:
Это сложный, а иногда и тайный мир, и требует некоторой работы для понимания.
Если вы ищете бесплатное, очень функциональное приложение для сопоставления, могу ли я предложить:
MapWindow (mapwindow.com)
Ответ 6
Даниэль Левин в TechCrunch Trends сделал приятные вещи с пакетом maps
в Р. Он также имеет код на своем сайте.
Предложение Paul о том, чтобы смотреть в Обработку, которую Бен Фрай использовал для создания zipdecode, также является хорошим, если вы собираетесь изучать (Java-подобный) новый язык.
Ответ 7
В зависимости от вашего приложения долгий путь может состоять в следующем:
http://googlemapsmania.blogspot.com/2006/07/new-google-maps-us-zip-code-mashups.html
Чтобы отобразить данные. Если это не совсем то, что вы хотели, вы можете получить исходные шейп файлы из census.gov и сделать это вручную, что очень больно.
Кроме того, если вы его не видели, это удобный способ взаимодействия с подобными данными и может предложить некоторые указатели:
http://benfry.com/zipdecode/
Ответ 8
Ознакомьтесь с отличным инструментом онлайн-визуализации от IBM
http://manyeyes.alphaworks.ibm.com/manyeyes/
РЕДАКТИРОВАТЬ FYI, ManyEyes использует Инструментарий визуализации Prefuse для некоторых из его видов. Несмотря на то что это java-based framework, они также предоставляют инструмент Flash/ActionScript для Интернета.