0

我试图在明尼苏达州、爱荷华州和内布拉斯加州的县上绘制盈利能力。使用leafletand tigris,我已经能够绘制所有县,无论我是否有数据。这给我留下了几个有颜色的县,其余的被标记为 NA。有没有办法让我从我的geo_join数据中删除所有 NA,这样它就不会在未使用的威斯康星州地区使用?我已经尝试使用fortify,但是当我将 TIGER 边界线与县 FIPS 文件合并以删除它们时,我无法弄清楚如何确定我正在查看的县边界。

这是我leaflet目前的样子:在此处输入图像描述

我获取地图的代码是这样的:

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那么轻,这样北美县就不会脱颖而出。

感谢您提供的所有帮助,如果您有任何问题,请告诉我!

4

2 回答 2

2

我是tigris包的创建者。非常感谢您使用它!tigris在GitHub ( https://github.com/walkerke/tigris )的开发版本中,我添加了一个选项来geo_join容纳内部连接,这将完全从结果空间数据框中删除不匹配的数据(如果这是你在找什么)。如果需要,您还可以提供通用合并列名称作为新by参数的命名参数。例如:

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

应该管用。我仍在测试,但我可能会在 1 月份将此更新提交给 CRAN。

于 2015-12-15T16:23:30.243 回答
0

所以,令人尴尬的是,这个问题的答案就像我希望的那样简单。我调整了以下na.color代码,它完全按照我的意愿工作。

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

在此处输入图像描述

于 2015-12-10T14:27:00.070 回答