nasıl

2014-08-27 15 views
8

nasıl R 50 eyalet harita yapabilirim (yerine sadece alt-48) 50 eyalet harita oluşturulur?nasıl

Tüm örnekteki gibi yarattık insanlar sizin için yararlı olabilir sadece alt 48

+0

Bu haritalar "choropleths" olarak adlandırılmıştır. Bir "choropleth 50 state" araması için Google araması bana 50 eyalette haritalar oluşturabilen "choroplethr" paketini buldu. – shadowtalker

cevap

5

This R-bloggers link vardır haritalar gibi görünüyor.

sana bir görünüm vermek için,

library(maps) 
map("world", c("USA", "hawaii"), xlim = c(-180, -65), ylim = c(19, 72)) 

enter image description here

İster inanın ister inanmayın, Hawaii orada üzerindedir ile 50 devlet haritasında başlayabilirsiniz. Kenar boşlukları yüzünden gerçekten çok küçük.

14

Bunu yapmanın birçok yolu vardır. Şahsen, Google’ın en çekici haritalara sahip olduğunu düşünüyorum. ggmap, googleVis ve/veya RgoogleMaps'u öneririm. Örneğin

:

require(googleVis) 

G4 <- gvisGeoChart(CityPopularity, locationvar='City', colorvar='Popularity', 
        options=list(region='US', height=350, 
           displayMode='markers', 
           colorAxis="{values:[200,400,600,800], 
           colors:[\'red', \'pink\', \'orange',\'green']}") 
) 
plot(G4) 

bu üretir:

enter image description here

maps nasıl içe gösterir this tutorial yaklaşımını takip etmektir daha size daha çekici bir sonuç verecektir başka yaklaşım Inkscape'den (veya eşdeğerde, Adobe Illustrator'dan) çizim yapmak için R'ye özel haritalar.

ggplot2

:

library(choroplethr) 
library(ggplot2) 
library(devtools) 
install_github('arilamstein/[email protected]') 
library(choroplethrZip) 

data(df_zip_demographics) 
df_zip_demographics$value = df_zip_demographics$percent_asian 

zip_map = ZipChoropleth$new(df_zip_demographics) 
zip_map$ggplot_polygon = geom_polygon(aes(fill = value), 
             color = NA) 
zip_map$set_zoom_zip(state_zoom = NULL, 
        county_zoom = NULL, 
        msa_zoom = NULL, 
        zip_zoom = NULL) 
zip_map$title = "50 State Map for StackOverflow" 
zip_map$legend = "Asians" 
zip_map$set_num_colors(4) 
choro = zip_map$render() 
choro 

data(df_pop_state) 
outline = StateChoropleth$new(df_pop_state) 
outline = outline$render_state_outline(tolower(state.name)) 

choro_with_outline = choro + outline 
choro_with_outline 

verir:

İşte R and Inkscape

choroplethr ve ggplot2 ile buna bir yolu şudur:

Böyle bir şey ile bitireceğiz

+0

Güncelleme: Bu çözüme eşlik edecek bir blog yazısı yazdım http://hack-r.com/?p=507 –

2

Sen maptools paketinde state.vbm haritası, bu 50 eyalette kapsar ve daha görünür daha küçük devletler yapar kullanarak düşünebilirsiniz (renklendirme, ya da her duruma araziler eklemek için çalışıyor, ancak siteler arasında mesafeler kesin olmayacak) .

Diğer bir seçenek açık alanlar Konya ve Kayseri kendiniz ekleyin ardından, bitişik 48 eyalet çıkarmaktır. Bunu yapmak için bir seçenek, TeachingDemos paketinden subplot işlevini kullanmaktır. Sadece devletler için uygun şekil dosyaları bulmak gerekir

library(maptools) 
library(TeachingDemos) 

data(state.vbm) 
plot(state.vbm) 

yy <- readShapePoly(system.file("shapes/co37_d90.shp", package="maptools")[1]) 
zz <- readShapePoly(system.file("shapes/co51_d90.shp", package="maptools")[1]) 
xx <- readShapePoly(system.file("shapes/co45_d90.shp", package="maptools")[1]) 
plot(yy) 
par('usr') 

subplot(plot(zz), c(-84,-81), c(31,33)) 
subplot(plot(xx), c(-81, -78), c(31,33)) 

: Burada

maptools paket tarafından sağlanan shapefile bir çift kullanarak bazı örnek kodudur. hala kabul edilen bir yanıt olmadığı için

4

eski iplik kurtarılıyor.

Kontrol dışarı @ hrbrmstr en albersusa paketi:

devtools::install_github("hrbrmstr/albersusa") 
library(albersusa) 
plot(usa_composite(proj="laea")) 

enter image description here

üretir ve çok daha fazlası

us <- usa_composite() 
us_map <- fortify(us, region="name") 

gg <- ggplot() 
gg <- gg + geom_map(data=us_map, map=us_map, 
        aes(x=long, y=lat, map_id=id), 
        color="#2b2b2b", size=0.1, fill=NA) 
gg <- gg + theme_map() 

gg + 
    geom_map([email protected], map=us_map, 
      aes(fill=pop_2014, map_id=name), 
      color="white", size=0.1) + 
    coord_proj(us_laea_proj) + 
    scale_fill_viridis(name="2014 Populaton Estimates", labels=comma) + 
    theme(legend.position="right") 

enter image description here

yapabilirsiniz