web-dev-qa-db-fra.com

Tracer la carte de couleur avec les codes postaux en R ou Python

J'ai des données démographiques et firmographiques américaines.
J'aimerais tracer les zones de code postal dans un État ou une région plus petite (par exemple, une ville). Chaque zone serait annotée par couleur et/ou texte spécifique à cette zone. Le résultat serait similaire à http://maps.huge.info/ mais a) avec un texte annoté; b) sortie pdf; c) scriptable en R ou en Python.

Existe-t-il un paquet et un code qui me permettent de le faire?

27
gappy

Je suppose que vous voulez des cartes statiques. 

texte alt http://files.eduardoleoni.com/mapUS.png

1) Obtenez les fichiers de formes des Zip frontières et état frontières à census.gov: 

2) Utilisez la fonction plot.heat que j'ai publiée dans ce SO question .

Par exemple (supposons que les fichiers de formes maryland se trouvent dans le sous-répertoire 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()
37
Eduardo Leoni

Il y a beaucoup de façons de faire cela dans R (voir vue spatiale ); beaucoup de ces dépendent du paquet "maps" .

9
Shane

Quelqu'un a peut-être quelque chose de plus direct pour vous, mais j'ai trouvé le «Data Mashups in R» d'O'Reilly très intéressant… il s'agit en partie d'une cartographie spatiale des enchères de forclusion de maisons.

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

3
William Doane

En Python, vous pouvez utiliser les fichiers de formes du recensement américain avec le package basemap. Voici un exemple de remplir les états en fonction de la population.

2
endolith

Il existe une série riche et sophistiquée de packages dans R permettant de tracer, d’analyser et d’autres fonctions liées aux SIG. La vue des tâches CRAN sur Données spatiales : Est un endroit pour commencer. Il s’agit d’un monde complexe et parfois obscur, qui demande du travail. 

Si vous recherchez une application de cartographie gratuite et très fonctionnelle, puis-je vous suggérer:

MapWindow (mapwindow.com)

1
pbleic

Daniel Levine de TechCrunch Trends a fait de belles choses avec le paquetage maps de R. Il a également du code disponible sur son site.

La suggestion de Paul de se pencher sur Processing - que Ben Fry utilisait pour créer du code zip - est également valable si vous souhaitez apprendre un nouveau langage (semblable à Java).

1
Matt Parker

Découvrez cet excellent outil de visualisation en ligne d’IBM http://manyeyes.alphaworks.ibm.com/manyeyes/

EDITFYI, ManyEyes utilise le toolkit de visualisation Prefuse pour une partie de son contenu. Même s'il s'agit d'un framework basé sur Java, ils fournissent également un outil Flash/ActionScript pour le Web.

0
Amro

En fonction de votre application, un long chemin peut ê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 souhaitiez, vous pouvez obtenir des fichiers de formes bruts de code postal de recensement.gov et le faire manuellement, ce qui est très pénible.

De plus, si vous ne l'avez pas vu, c'est un moyen pratique d'interagir avec des données similaires et peut offrir des indications:

http://benfry.com/zipdecode/

0
Paul McMillan