2015-01-22 8 views
2

Я пытаюсь создать карту США, с которой позже я смогу добавить интерактивные слои. Однако на основе созданного многоугольника, похоже, проблема с порядком; Я приказал им несколько разных способов, и никто из них не работал должным образом. Любая помощь будет оценена по достоинству.Создание карты США, включая государственные границы в ggvis

library(ggplot2) 
library(ggvis) 
library(dplyr) 

mdat<-map_data("state") 

mdat %>% 
    arrange(group,order) %>% 
    ggvis(x=~long,y=~lat) %>% 
    layer_paths() 
+1

Возможно, как это. 'mdat%>% group_by (group)%>% ggvis (x = ~ long, y = ~ lat)%>% layer_paths()' – jazzurro

+0

У меня есть расширенные примеры того, как это сделать (как для карты, так и для взаимодействия) [здесь] (https://rud.is/b/2014/12/29/making-static-interactive-maps-with-ggvis-using-ggvis-maps-wshiny/). Для более сложных шейп-файлов мне также нужно было делать 'group_by (group, region)'. – hrbrmstr

ответ

3

Я рывок немного от поста я связан с для более полного примера (который включает в себя использование большого Санера проекции для 48 смежных штатов США):

library(ggplot2) 
library(ggvis) 
library(dplyr) 
library(rgdal) 
library(httr) 

# decent US shapefile and httr lets us only d/l when needed 
stop_for_status(GET("http://eric.clst.org/wupl/Stuff/gz_2010_us_040_00_500k.json", 
       write_disk("us.geojson"), progress())) 

states <- readOGR("us.geojson", "OGRGeoJSON") 
states <- states[!states$NAME %in% c("Alaska", "Hawaii", "Puerto Rico", "District of Columbia"),] 
states_aea <- spTransform(states, CRS("+proj=laea +lat_0=45 +lon_0=-100 +x_0=0 +y_0=0 +a=6370997 +b=6370997 +units=m +no_defs")) 

states_map <- fortify(states_aea, region="NAME") 

states_map %>% 
    group_by(group) %>% 
    ggvis(~long, ~lat) %>% 
    layer_paths(strokeOpacity := 0.5, strokeWidth := 0.5) %>% 
    hide_axis("x") %>% hide_axis("y") %>% 
    set_options(width=960, height=600, keep_aspect=TRUE) 

enter image description here

+0

Спасибо. Получил это, чтобы работать с вашей помощью. – Jcrist