2009-09-17 15 views
26

Mam kilka danych demograficznych i firmograficznych z USA.
Chciałbym wykreślić obszary kodu pocztowego w stanie lub w mniejszym regionie (np. Mieście). Każdy obszar będzie oznaczony adnotacją koloru i/lub tekstu specyficznego dla tego obszaru. Dane wyjściowe będą podobne do http://maps.huge.info/, ale a) z tekstem opatrzonym adnotacją; b) wydruk pdf; c) skryptowalne w języku R lub Python.Wykreślanie mapy kolorów z kodami pocztowymi w R lub Python

Czy istnieje pakiet i kod, który pozwala mi to zrobić?

Odpowiedz

36

jestem zakładając chcesz map statycznych.

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

1) Get Shapefiles granic zip i state granice na census.gov:

2) Użyj funkcji plot.heat ja pisał w tym SO question.

Na przykład (zakłada masz Shapefiles Maryland w podkatalogu mapie):

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() 
+8

Linki do plików kształtów na stronie www.census.gov są zepsute ... znalezienie ich zajęło mi trochę czasu. Spróbuj tego adresu URL: http://www.census.gov/cgi-bin/geo/shapefiles2010/main. Następnie użyj menu, aby wybrać "Obszary tabel kodów pocztowych" i "Stany (i odpowiedniki)". –

+0

Czy możesz wyjaśnić, w jaki sposób mogę odwzorować wartości z pliku csv, który ma kolumnę kodu pocztowego i kilka innych kolumn danych, aby z niego skorzystać (przepraszam, jeśli odpowiedź jest oczywista, ale tak naprawdę nie znam wcale R)? W szczególności mam problem z ustaleniem, co powinienem umieścić na '[email protected]$noise <- rnorm (nrow ([email protected]))' 'labelpos <- data.frame (do.call (rbind, lapply ([email protected], function (x) x @ labpt))) 'i' [email protected] <- data.frame ([email protected], labelpos) ' – soandos

0

W zależności od aplikacji, długa droga wokół może być używać coś takiego:

http://googlemapsmania.blogspot.com/2006/07/new-google-maps-us-zip-code-mashups.html

mapowania danych. Jeśli nie było to dokładnie to, czego chciałeś, możesz uzyskać surowy shapefiles kodu z pliku census.gov i zrobić to ręcznie, co jest dość uciążliwe.

Ponadto, jeśli nie widziałeś, jest to świetny sposób na interakcję z podobnymi danymi i może zaoferować kilka wskazówek:

http://benfry.com/zipdecode/

+0

Również ładne, ale są to wizualizacje lokalizacji/granic kodów pocztowych. Szukam elastycznego sposobu w R lub Pythonie do generowania map z niestandardowymi kolorami lub z zaznaczonymi tekstami regionami zip. – gappy

0

Sprawdź to doskonałe narzędzie do wizualizacji online IBM http://manyeyes.alphaworks.ibm.com/manyeyes/

EDIT FYI, ManyEyes używa Prefuse visualization toolkit dla niektórych jej mianowicie. Mimo że jest to środowisko oparte na Javie, udostępnia również narzędzie Flash/ActionScript dla sieci.

+0

To jest fajne. Ma to wiele wspólnego z http://gapminder.org –

+0

Czy to samo, co Hans Rosling z TED sprzed kilku lat, – Amro

+0

miło, ale manyeyes nie odpowiada na moje pytanie. Myślę, że to bardzo różni się od gapminder. Wattenberg jest facetem zajmującym się wizualizacją, Rosling jest socjologiem i pokazuje różne podejście. – gappy

3

Ktoś może mieć dla ciebie coś bardziej bezpośredniego, ale uznałem, że "Data Mashups in R" O'Reilly'ego jest bardzo interesujące ... w części, jest to mapowanie przestrzenne aukcji wykluczenia domu.

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

+0

Plus, bez DRM i tylko 5 USD ... trudno pokonać tę umowę! – Stedy

1

Jest bogaty i wyrafinowany seria pakietów w R inwestycyjnym, zrobić analizę i inne funkcje związane z GIS. Jednym z miejsc, w którym można zacząć, jest widok zadania CRAN pod numerem Spatial Data: Jest to skomplikowany i niekiedy tajemniczy świat, który wymaga trochę pracy, aby go zrozumieć.

Jeśli szukasz darmowego, bardzo funkcjonalnej aplikacji mapowania, mogę zasugerować:

MapWindow (mapwindow.com)

+0

Nie mogłem znaleźć niczego w widoku CRAN, które pomogłoby mi zwizualizować statystyki kodu zip na mapie. Najbliżej dostałem pakiet muRL. – gappy

1

Daniel Levine at TechCrunch Trends zrobił ładne rzeczy z pakietu w R. maps Ma kod dostępne również na jego stronie.

Sugestia Paula dotycząca przetwarzania, którą Ben Fry użył do stworzenia zipdecodu, jest również dobra, jeśli chcesz nauczyć się nowego języka (podobnego do Java).

+0

Uwaga: mapy trendów są zip-code level. –

+0

dzięki Matt, tak mapy trendów są na poziomie kodu pocztowego, ale zamiast zacieniać obszary kodu pocztowego, faktycznie mapowałem kody zip na długie/długie współrzędne. Ktoś jest jednak mile widziany w kodzie. – Dan

9

Jest wiele sposobów zrobienia tego w R (patrz: spatial view); wiele z tych depend on the "maps" package.

+1

Wygląda na to, że te przykłady znajdują się w hrabstwie, a nie z kodu pocztowego, poziom –

Powiązane problemy