2015-12-09 2 views
0

Я пытаюсь построить прибыльность на вершине графств в штатах Миннесота, Айова и Небраска. Используя leaflet и tigris, я смог построить ВСЕ округа, независимо от того, есть ли у меня данные для него. Это оставляет меня с несколькими графствами с цветами, а остальное обозначается как NA. Есть ли способ удалить все NA из моих данных geo_join, чтобы он просто не использовался в неиспользуемых областях штата Висконсин? Я пробовал использовать fortify, но не могу понять, как определить границы границ, на которые я смотрю, когда я соединяю граничные линии TIGER с моим файлом округа FIPS, чтобы удалить их.Удалить неиспользуемый GEOID в geo_join

Вот что мой leaflet в настоящее время выглядит следующим образом: enter image description here

Мой код, чтобы получить карту это:

library(tigris) 
library(leaflet) 

pal <- colorNumeric(c("yellow","dark red"),county$Construction.Cost,na.color="white") 
IA_counties <- counties(state="IA", cb=TRUE, resolution ="20m") 
MN_counties <- counties(state="MN",cb=TRUE,resolution="20m") 
NE_counties <- counties(state="NE",cb=TRUE,resolution="20m") 
IA_merged <- geo_join(IA_counties,county,"GEOID", "GEOID") 
MN_merged <- geo_join(MN_counties,county,"GEOID","GEOID") 
NE_merged <- geo_join(NE_counties,county,"GEOID","GEOID") 
popupIA <- paste0("County Projects: ", as.character(paste('$',formatC(format(round(IA_merged$Construction.Cost, 0), big.mark=',', format = 'f'))))) 
popupMN <- paste0("County Projects: ", as.character(paste('$',formatC(format(round(MN_merged$Construction.Cost, 0), big.mark=',', format = 'f'))))) 
popupNE <- paste0("County Projects: ", as.character(paste('$',formatC(format(round(NE_merged$Construction.Cost, 0), big.mark=',', format = 'f'))))) 


leaflet() %>% 
     addProviderTiles("MapQuestOpen.OSM") %>% 
     addLegend(pal = pal, 
       values = IA_merged$Construction.Cost, 
       position = "bottomright", 
       title = "County Projects", 
       labFormat=labelFormat(prefix="$")) %>% 
     addCircles(lng=yup2$lon, lat=yup2$lat,weight=.75,fillOpacity=0.01,color="red", 
       radius = 96560) %>% 
     addCircles(lng=yup2$lon, lat=yup2$lat,weight=.75,fillOpacity=0.01,color="blue", 
       radius = 193121) %>% 
     addPolygons(data = IA_counties, 
        fillColor = ~pal(IA_merged$Construction.Cost), 
        layerId=1, 
        fillOpacity = .25, 
        weight = 0.05, 
        popup = popupIA)%>% 
     addPolygons(data=MN_counties, 
        fillColor=~pal(MN_merged$Construction.Cost), 
        fillOpacity=0.25, 
        weight=0.05, 
        popup = popupMN) %>% 
     addPolygons(data=NE_counties, 
        fillColor=~pal(NE_merged$Construction.Cost), 
        fillOpacity=0.25, 
        weight=0.05, 
        popup = popupNE) 

Я извиняюсь за не включая воспроизводимые данные, но в случае необходимости, пожалуйста, обращайтесь. Я надеюсь, что это скорее простое решение формулы na.color=. На данный момент карта выглядит «хорошо», но мне бы хотелось, чтобы не было так легко сделать fillOpacity так, чтобы округа NA не выделялись.

Спасибо за любую помощь и, пожалуйста, сообщите мне, если у вас есть какие-либо вопросы!

ответ

0

Так что, смущающе, ответ на этот вопрос был таким простым, как я надеялся. Я изменил следующий код na.color, и он работал точно так, как я хотел.

pal <- colorNumeric(c("yellow","dark red"),county$Construction.Cost,na.color="transparent") 

enter image description here

2

Я создатель tigris пакета. Большое спасибо за его использование! В версии разработки tigris на GitHub (https://github.com/walkerke/tigris) я добавил параметр geo_join для размещения внутренних соединений, который полностью удалит непревзойденные данные из результирующего фрейма пространственных данных (если это то, что вы ищете). Вы также можете указать общее имя столбца объединения как именованный аргумент для нового параметра by, если хотите. Например:

IA_merged <- geo_join(IA_counties, county, by = "GEOID", how = "inner") 

должно работать. Я все еще тестирую, но я, вероятно, отправлю это обновление в CRAN в январе.

+0

Спасибо за головы! Просто хочу сказать, что я действительно ценю ваш пакет 'tigris' и его полезность с помощью« листовки ». Продолжайте в том же духе! – medavis6

Смежные вопросы