para - Trazar mapa de color con códigos postales en R o Python
r vs python cual es mejor (8)
Tengo algunos datos demográficos y firmográficos de los Estados Unidos.
Me gustaría trazar áreas de código postal en un estado o una región más pequeña (por ejemplo, ciudad). Cada área sería anotada por color y / o texto específico para esa área. La salida sería similar a http://maps.huge.info/ pero a) con texto anotado; b) salida en pdf; c) programable en R o Python.
¿Hay algún paquete y código que me permita hacer esto?
Alguien puede tener algo más directo para usted, pero me pareció muy interesante el ''Data Mashups in R'' de O''Reilly ... en parte, es un mapeo espacial de las subastas de ejecuciones hipotecarias.
Dependiendo de su aplicación, un largo camino podría ser usar algo como esto:
http://googlemapsmania.blogspot.com/2006/07/new-google-maps-us-zip-code-mashups.html
Para mapear sus datos. Si no era exactamente lo que quería, puede obtener shapefiles de código postal sin procesar en census.gov y hacerlo manualmente, lo cual es un gran dolor.
Además, si no lo has visto, esta es una buena manera de interactuar con datos similares, y podría ofrecer algunos consejos:
Echa un vistazo a esta excelente herramienta de visualización en línea de IBM http://manyeyes.alphaworks.ibm.com/manyeyes/
EDIT FYI, ManyEyes utiliza el kit de herramientas de visualización Prefuse para algunos de sus aspectos. Aunque es un marco basado en Java, también proporcionan una herramienta Flash / ActionScript para la web.
En Python, puede usar shapefiles del censo de EE. UU. Junto con el paquete de basemap
. Aquí hay un ejemplo de rellenar estados según la población.
Hay muchas formas de hacerlo en R (ver la vista espacial ); muchos de estos dependen del paquete de "mapas" .
Echa un vistazo a este ejemplo fresco de la elección de los Estados Unidos 2004 . Termina pareciéndose a esto: texto alternativo http://www.ai.rug.nl/~hedderik/R/US2004/US04Election-PopGraded.png
Aquí hay un ejemplo ligeramente feo de un modelo que utiliza el paquete de "mapas" con "celosía".
- Andrew Gelman hizo algunas tramas muy bonitas como esta. Vea, por ejemplo, esta publicación de blog sobre estados rojos / estados azules y esta publicación de seguimiento .
Aquí hay un ejemplo muy simple usando el paquete "gmaps" , que muestra un mapa de arrestos por estado por arrestos por 100,000 por asesinato:
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)
Hay una serie rica y sofisticada de paquetes en R para trazar, hacer análisis y otras funciones relacionadas con GIS. Un lugar para comenzar es la vista de tareas CRAN en Datos espaciales : este es un mundo complejo y, a veces, arcano, y requiere un poco de trabajo para comprenderlo.
Si está buscando una aplicación de mapas gratuita y muy funcional, puedo sugerirle:
MapWindow (mapwindow.com)
Supongo que quieres mapas estáticos.
texto alternativo http://files.eduardoleoni.com/mapUS.png
1) Obtenga los shapefiles de los límites zip y state límites state en census.gov:
2) Utilice la función plot.heat que publiqué en esta pregunta SO .
Por ejemplo (asume que tienes los shapefiles de maryland en el subdirectorio del mapa):
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()
Daniel Levine en TechCrunch Trends ha hecho cosas buenas con el paquete de maps
en R. También tiene un código disponible en su sitio.
La sugerencia de Paul de estudiar Procesamiento, que Ben Fry usó para crear el código postal, también es buena, si está preparado para aprender un nuevo lenguaje (similar a Java).