Plotten Farbkarte mit Postleitzahlen in R oder Python
Frage
Ich habe einige US demografische und firmographic Daten.
Ich möchte in einem Zustand zipcode Bereiche zeichnen oder einen kleineren Bereich (z Stadt). Jeder Bereich würde durch Farbe und / oder Text mit Anmerkungen versehen wird speziell für diesen Bereich. Der Ausgang wäre ähnlich wie http://maps.huge.info/ aber a) mit kommentierten Text; b) PDF-Ausgabe; c) skript in R oder Python.
Gibt es ein Paket und Code, den mir dies zu tun erlaubt?
Lösung
Ich gehe davon aus Sie statische Karten möchten.
(Quelle: eduardoleoni.com )
1) Holen Sie sich die Shape-Dateien des zip Grenzen und < a href = "http://www.census.gov/geo/www/cob/st2000.html" rel = "nofollow noreferrer"> Zustand Grenzen bei census.gov:
2) Verwenden Sie die Funktion plot.heat ich in diesem Frage SO .
Zum Beispiel (vorausgesetzt, dass Sie die Maryland-Shape-Dateien in der Karte Unterverzeichnis):
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()
Andere Tipps
Es gibt viele Möglichkeiten, dies in R zu tun (siehe räumliche Ansicht ); viele dieser hängen von der „Karten“ -Paket .
-
Schauen Sie sich diese kühlen Beispiel der US-Wahl 2004 . Es endet wie folgt aussehen:
-
Hier ist ein wenig hässlich Beispiel eines Modells , die die „Karten“ verwendet Paket mit "Gitter".
- Andrew Gelman hat einige sehr schöne Plots wie diese. Siehe zum Beispiel diese Blog-Post auf roten Staaten / blaue Staaten und diese Follow-up Post .
-
Hier ist ein sehr einfaches Beispiel die "gmaps" mit Paket , die Verhaftungen pro 100.000 für Mord Karte von Arrests von Staat zeigt:
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)
Jemand kann etwas direkteren für Sie, aber ich finde O'Reilly ‚Data Mashups in R‘ sehr interessant ... teilweise, es ist eine räumliche Zuordnung von zu Hause Abschottung Auktionen.
In Python können Sie Shape-Dateien aus der US Volkszählung zusammen mit dem basemap
Paket verwenden. Hier ist ein Beispiel für Füllung in Staaten nach Bevölkerung.
Es gibt eine reiche und anspruchsvolle Reihe von Paketen in R plotten, zu tun Analyse und anderen GIS-bezogene Funktionen. Ein Ort, um loszulegen ist die CRAN Aufgabe Blick auf Geodaten : Dies ist eine komplexe und manchmal obskure Welt, und dauert einige Arbeit zu verstehen.
Wenn Sie sich für eine kostenlose, sehr funktionale Mapping-Anwendung suchen, kann ich vorschlagen:
MapWindow (mapwindow.com)
Daniel Levine bei TechCrunch Trends schöne Dinge mit dem maps
Paket in R. getan hat: Er hat Code zur Verfügung auf seiner Seite, auch.
Paul Vorschlag in Verarbeitung suchen - die Ben Fry verwendet zipdecode zu machen - ist auch ein guter, wenn Sie für das Erlernen einer (Java-like) neue Sprache sind bis
.Je nach Anwendung, ein langer Weg, um sein könnte, so etwas zu verwenden:
http: // googlemapsmania .blogspot.com / 2006/07 / new-google-maps-us-Zip-Code-mashups.html
Ihre Daten abzubilden. Wenn das nicht recht war, was Sie wollten, können Sie rohe Postleitzahl Shape-Dateien von census.gov bekommen und tun es manuell, die ganz ein Schmerz ist.
Auch wenn Sie es nicht gesehen haben, ist dies eine nette Art und Weise mit ähnlichen Daten zu interagieren, und vielleicht einige Hinweise bieten:
Überprüfen Sie diese ausgezeichnete Online-Visualisierungstool heraus von IBM http://manyeyes.alphaworks.ibm.com/manyeyes/
Bearbeiten FYI, verwendet ManyEyes die Prefuse Visualisierung Toolkit für einige seiner nämlich. Auch wenn es ein Java-basiertes Framework ist, bieten sie auch ein Flash / Actionscript-Tool für das Web.