Représentation graphique de la carte des couleurs avec les codes postaux en R ou en Python
j'ai un peu de NOUS démographiques et firmographic de données.
Je voudrais tracer les zones de zipcode dans un État ou une plus petite région (par exemple ville). Chaque zone serait annotée par couleur et/ou texte propre à cette zone. Le résultat serait similaire à http://maps.huge.info/ mais une) avec le texte annoté; b) le fichier pdf de sortie; c) des scripts dans R ou Python.
y a-t-il un paquet et un code qui me permettent de faire ça?
8 réponses
je suppose que vous voulez des cartes statiques.
alt texte http://files.eduardoleoni.com/mapUS.png
1) Obtenir les shapefiles de la zip limites et état limites à census.gov:
2) utiliser la parcelle.fonction de chaleur I affiché dans ce SO question .
par exemple (suppose que vous avez le maryland les fichiers de formes dans la carte sous-répertoire):
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()
il y a plusieurs façons de le faire dans R (voir la vue spatiale ); beaucoup de ces dépendent du paquet" maps .
-
découvrez ce cool exemple de l'élection de 2004, NOUS . Il finit par ressembler à ceci: texte alt http://www.ai.rug.nl / ~hedderik/R/US2004 / US04Election-PopGraded.png
-
exemple légèrement laid d'un modèle qui utilise le paquet "maps" avec "lattice".
- Andrew Gelman a fait quelques très belles parcelles comme celle-ci. Voir, par exemple, ce billet de blog sur le rouge unis/blue states et ce suivi post .
-
voici un exemple très simple utilisant le paquet" gmaps , qui montre une carte des arrestations par état pour les arrestations pour 100 000 pour meurtre:
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)
Quelqu'un a peut-être quelque chose de plus direct pour vous, mais J'ai trouvé les Mashups de données D'O'Reilly dans R 'très intéressant... en partie, c'est une cartographie spatiale des ventes aux enchères de maisons.
en Python, vous pouvez utiliser les shapefiles du recensement américain avec le paquet basemap
. Voici un exemple de remplir les États selon la population.
il y a une série riche et sophistiquée de paquets dans R pour tracer, faire l'analyse, et d'autres fonctions liées aux SIG. Un point de départ est la vue de tâche CRAN sur données spatiales : C'est un monde complexe et parfois obscur, et il faut du travail pour le comprendre.
si vous cherchez une application de cartographie gratuite et très fonctionnelle, puis-je vous suggérer:
MapWindow ( mapwindow.com)
Daniel Levine à TechCrunch Trends a fait de belles choses avec le paquet maps
en R. Il a le code disponible sur son site, aussi.
la suggestion de Paul de se pencher sur le traitement - que Ben Fry a utilisé pour faire le code - est également une bonne, si vous êtes prêt pour l'apprentissage d'un (Java-like) nouveau langage.
selon votre application, un long chemin autour pourrait être d'utiliser quelque chose comme ceci:
http://googlemapsmania.blogspot.com/2006/07/new-google-maps-us-zip-code-mashups.html
pour cartographier vos données. Si ce n'était pas tout à fait ce que vous vouliez, vous pouvez obtenir le code postal brut shapefiles de census.gov et le faire manuellement, ce qui est assez pénible.
Aussi, si vous ne l'avez pas vu, c'est un moyen sympa de interagir avec des données similaires, et pourrait offrir quelques conseils:
découvrez cet excellent outil de visualisation en ligne par IBM http://manyeyes.alphaworks.ibm.com/manyeyes/
MODIFIER pour info, ManyEyes utilise le Prefuse visualization toolkit pour certains de ses viz. Même s'il s'agit d'un framework basé sur java, ils fournissent également un outil Flash/ActionScript pour le web.