choroplethr、ggmap 或 ggplot2 中的道路和半径圆
Roads and Radius Circles in choroplethr, ggmap, or ggplot2
我正在使用 library(choroplethr)
进行一些市场分析,我对制作 county_choropleth
以及将其覆盖在 ggmap()
之上或使用 reference_map=TRUE
有一些疑问] 在我的代码中。我想做的是获取我的县等值线并放置州 interstates/highways 并在其上绘制 circles/radii。
我目前拥有的是:
library(choroplethr)
data <- Data.frame(County.FIPS = c(19153,19163,19153,19153,19153,19153,19153,19113,19007,19169), Score=c(812.6,769.5,757.9,757.2,722.6,712.4,69727,690.2,64539,642.5)
county <-aggregate(data$Score~data$County.FIPS,data=data,sum)
colnames(county) <- c("region", "value")
mp <- county_choropleth(county, state_zoom=c("iowa"), num_colors = 1) +
theme(legend.position="none")+
scale_fill_gradient2("Score",
high = "dark green",
low = "red",
na.value = "grey90",
breaks = pretty(county$value, n = 10),
label = scales::dollar_format())
...这给了我这个情节。
从这里开始,我想做的是在我的地图上覆盖爱荷华州的主要州际公路,并创建一些半径圆来显示与某些城市的距离(以英里为单位)。 我希望它从这张地图中获取元素,并理想地将它们合并到我的 choroplethr 地图中,因为在我看来,它看起来比这个例子中的要干净得多:
我使用此代码检索了第二张地图:
library(ggmap)
test<-get_map(location = c(lon=-93.57217,lat=41.67269), maptype="roadmap",source="google",zoom=7,scale="auto")
yup <- data.frame(lon=c(-93.57217,-95.87509), lat=c(41.67269,41.23238),score=c(1,1))
ggmap(test) + stat_density2d(aes(x = lon, y = lat, fill = score,alpha=score),
size = 2, bins = 2, data = yup, geom = "polygon") +
theme(legend.position="none")
我在 choroplethr
库中使用 reference_map=TRUE
的主要问题是,当我将 county_choropleth 放在上面时,它会使标签、道路等变灰。例如,
那么,是否有一种简单的解决方法可以在地图上包含道路和绘制圆圈,或者我是否需要放弃使用 choroplethr
并转而使用 ggmap、ggplot2 或其他工具?我也已经能够在他们的网站上找到道路的爱荷华州 DOT shapefile,所以这是一个包含的选项,但我不知道具体如何只要求它在绘图和读入时使用 main interstates/highways R.
这是我针对此问题的 "ideal" MS Paint 解决方案:
预先感谢您提供的所有帮助,如果您有任何需要回答的澄清问题以便提供帮助,请告诉我!
对于那些后来偶然发现这个的人。通过将库更改为 leaflet
和 tigris
,我能够实现我希望做的事情。
我计划为个人使用做最后的调整,但这里是使用的代码:
library(tigris)
library(leaflet)
data <- data.frame(County.FIPS = c(19153,19163,19153,19153,19153,19153,19153,19113,19007,19169), Score=c(812.6,769.5,757.9,757.2,722.6,712.4,69727,690.2,64539,642.5))
county <-aggregate(data$Score~data$County.FIPS,data=data,sum)
colnames(county) <- c("GEOID", "Score")
IA_counties <- counties(state="IA", cb=TRUE, resolution ="20m")
IA_merged <- geo_join(IA_counties,county,"GEOID", "GEOID")
pal <- colorQuantile("Greens",NULL,n=3)
popup <- paste0("Profitability: ", as.character(IA_merged$Score))
yup2 <- data.frame(lon=c(-93.57217,-95.93779),lat=c(41.67269,41.25861),score=c(1,1))
leaflet() %>%
addProviderTiles("Esri.WorldStreetMap") %>%
addLegend(pal = pal,
values = IA_merged$Score,
position = "bottomright",
title = "County Profitablity: ") %>%
addCircles(lng=yup2$lon, lat=yup2$lat,weight=1,fillOpacity=0.05,color="red",
radius = 96560) %>%
addCircles(lng=yup2$lon, lat=yup2$lat,weight=1,fillOpacity=0.025,color="blue",
radius = 193121) %>%
addPolygons(data = IA_counties,
fillColor = ~pal(IA_merged$Score),
fillOpacity = 0.15,
weight = 0.2,
popup = popup)
我正在使用 library(choroplethr)
进行一些市场分析,我对制作 county_choropleth
以及将其覆盖在 ggmap()
之上或使用 reference_map=TRUE
有一些疑问] 在我的代码中。我想做的是获取我的县等值线并放置州 interstates/highways 并在其上绘制 circles/radii。
我目前拥有的是:
library(choroplethr)
data <- Data.frame(County.FIPS = c(19153,19163,19153,19153,19153,19153,19153,19113,19007,19169), Score=c(812.6,769.5,757.9,757.2,722.6,712.4,69727,690.2,64539,642.5)
county <-aggregate(data$Score~data$County.FIPS,data=data,sum)
colnames(county) <- c("region", "value")
mp <- county_choropleth(county, state_zoom=c("iowa"), num_colors = 1) +
theme(legend.position="none")+
scale_fill_gradient2("Score",
high = "dark green",
low = "red",
na.value = "grey90",
breaks = pretty(county$value, n = 10),
label = scales::dollar_format())
...这给了我这个情节。
从这里开始,我想做的是在我的地图上覆盖爱荷华州的主要州际公路,并创建一些半径圆来显示与某些城市的距离(以英里为单位)。 我希望它从这张地图中获取元素,并理想地将它们合并到我的 choroplethr 地图中,因为在我看来,它看起来比这个例子中的要干净得多:
我使用此代码检索了第二张地图:
library(ggmap)
test<-get_map(location = c(lon=-93.57217,lat=41.67269), maptype="roadmap",source="google",zoom=7,scale="auto")
yup <- data.frame(lon=c(-93.57217,-95.87509), lat=c(41.67269,41.23238),score=c(1,1))
ggmap(test) + stat_density2d(aes(x = lon, y = lat, fill = score,alpha=score),
size = 2, bins = 2, data = yup, geom = "polygon") +
theme(legend.position="none")
我在 choroplethr
库中使用 reference_map=TRUE
的主要问题是,当我将 county_choropleth 放在上面时,它会使标签、道路等变灰。例如,
那么,是否有一种简单的解决方法可以在地图上包含道路和绘制圆圈,或者我是否需要放弃使用 choroplethr
并转而使用 ggmap、ggplot2 或其他工具?我也已经能够在他们的网站上找到道路的爱荷华州 DOT shapefile,所以这是一个包含的选项,但我不知道具体如何只要求它在绘图和读入时使用 main interstates/highways R.
这是我针对此问题的 "ideal" MS Paint 解决方案:
预先感谢您提供的所有帮助,如果您有任何需要回答的澄清问题以便提供帮助,请告诉我!
对于那些后来偶然发现这个的人。通过将库更改为 leaflet
和 tigris
,我能够实现我希望做的事情。
我计划为个人使用做最后的调整,但这里是使用的代码:
library(tigris)
library(leaflet)
data <- data.frame(County.FIPS = c(19153,19163,19153,19153,19153,19153,19153,19113,19007,19169), Score=c(812.6,769.5,757.9,757.2,722.6,712.4,69727,690.2,64539,642.5))
county <-aggregate(data$Score~data$County.FIPS,data=data,sum)
colnames(county) <- c("GEOID", "Score")
IA_counties <- counties(state="IA", cb=TRUE, resolution ="20m")
IA_merged <- geo_join(IA_counties,county,"GEOID", "GEOID")
pal <- colorQuantile("Greens",NULL,n=3)
popup <- paste0("Profitability: ", as.character(IA_merged$Score))
yup2 <- data.frame(lon=c(-93.57217,-95.93779),lat=c(41.67269,41.25861),score=c(1,1))
leaflet() %>%
addProviderTiles("Esri.WorldStreetMap") %>%
addLegend(pal = pal,
values = IA_merged$Score,
position = "bottomright",
title = "County Profitablity: ") %>%
addCircles(lng=yup2$lon, lat=yup2$lat,weight=1,fillOpacity=0.05,color="red",
radius = 96560) %>%
addCircles(lng=yup2$lon, lat=yup2$lat,weight=1,fillOpacity=0.025,color="blue",
radius = 193121) %>%
addPolygons(data = IA_counties,
fillColor = ~pal(IA_merged$Score),
fillOpacity = 0.15,
weight = 0.2,
popup = popup)