使用R中usmap包中的plot_usmap在同一地图上绘制州和县边界

问题描述 投票:0回答:1

我想创建一个同时显示州和县边界(即州边界颜色不同)的美国地图。我通常使用导入的形状文件或使用ggplot2map_data函数来执行此操作。但是,我面临三个障碍。

1]我无法在计算环境中安装gdalgeos,从而无法使用任何形状文件或GeoJSON文件(我尝试映射使用fastshp加载的县级形状文件的尝试未成功,但我我们欢迎任何可以复制下面的地图但包含州界的解决方案)。

2)我需要包括夏威夷和阿拉斯加,以便从map_data中排除ggplot2的使用。

3)我需要地图同时包含州和县的边界,这使usmap包的使用成为ggplot2的包装函数时遇到了问题,但没有轻松且通用的功能来定制原始级别ggplot2对象。

4)另外,它不能使用sf包,因为它具有非R库依赖项(units包取决于C库libudunits2)。

[我需要:一张可以投射阿拉斯加和夏威夷并使用对比色显示州和县边界的地图,而我需要完成所有这些工作,而不必依靠任何依赖于rgeosrgdal和/或[ C0]。

[到目前为止,我从units软件包尝试过的内容:

plot_usmap

[我怀疑正在发生的事情是,一层(原始usmap代码)是使用与library(dplyr) library(stringr) library(ggplot2) library(usmap) library(mapproj) devtools::install_github("wmurphyrd/fiftystater") library(fiftystater) county_data<-read.csv("https://www.ers.usda.gov/webdocs/DataFiles/48747/PovertyEstimates.csv?v=2529") %>% # filter(Area_name != "United States") %>% select(FIPStxt, Stabr, Area_name, PCTPOVALL_2017) %>% rename(fips = FIPStxt) crimes <- data.frame(state = tolower(rownames(USArrests)), USArrests) state_map <- map_data("state") plot_usmap(data = county_data, values = "PCTPOVALL_2017", color = "white") + geom_map(data = crimes, aes(map_id = state), map = fifty_states, color= "red") + geom_path(data = state_map, aes(x =long , y=lat), color= "red")+ expand_limits(x = fifty_states$long, y = fifty_states$lat) + theme(legend.position = "none") + theme_map() #no go plot_usmap(data = county_data, values = "PCTPOVALL_2017", color = "white") + geom_map(data = crimes, aes(map_id = state), map = fifty_states, color= "red") + expand_limits(x = fifty_states$long, y = fifty_states$lat) + theme(legend.position = "none") + theme_map() #no go plot_usmap(data = county_data, values = "PCTPOVALL_2017", color = "white") + geom_map(data = crimes, aes(map_id = state, color= "red"), map = fifty_states) + expand_limits(x = fifty_states$long, y = fifty_states$lat) + theme(legend.position = "none") + theme_map() #no go 生成的另一层不同的CRS系统投影的。第二层产生一个非常小的红点(请参见下面的地图中的圆圈)。不知道如何在未安装geos / gdal的情况下重新投影。看到下面的地图,黑色圆圈突出显示红点所在的位置。

ggplot

r ggplot2 mapping ggmap
1个回答
0
投票

library(dplyr)库(ggplot2)library(usmap)

在获得软件包作者的帮助以及我自己的一些修改之后,我终于能够获得所需的输出。

此方法对于希望生成包含阿拉斯加和夏威夷在内的美国地图的人员来说是理想之选...

1)无法将非R软件包安装在运行R引擎的环境(例如缺少管理员访问权限)

2)需要使用对比来绘制县和州边界颜色

plot_usmap

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.