R语言usmap包绘制美国地图时如何加粗人口普查区域边界
实现方案
plot_usmap 基于ggplot2开发,你已经完成了县级细边界的人口图绘制,只需要额外叠加一层粗线图层,单独绘制四个人口普查区域之间的分界即可,不需要修改原有县级图层的设置。
操作步骤
- 调用usmap内置的州级地理数据,数据本身已经绑定了每个州所属的普查区域(Northeast/Midwest/West/South)属性,不需要手动整理映射关系
- 保留原有县级图层的细线设置(
size=0.05),新增独立的sf图层绘制区域边界,设置更大的线宽,同时将图层填充设为透明,避免覆盖下层的县级人口配色 - 修正原代码里的语法错误:
countypop参数后多余的逗号会导致运行报错
可直接运行的完整代码
library(usmap) library(ggplot2) # 提取带普查区域属性的州边界数据 state_boundary <- us_map(regions = "states") plot_usmap(data = countypop, size = 0.05, color = "black", values = "pop_2015") + # 叠加普查区域粗分界层 geom_sf( data = state_boundary, aes(group = census_region), color = "black", linewidth = 1.2, # 可根据显示需求调整粗细,数值越大线条越粗 fill = NA # 设为透明,不遮挡下层县级数据配色 ) + scale_fill_gradient2( low = "blue", mid = "white", high = "red", midpoint = median(countypop$pop_2015), # 原代码midpoint=0不符合人口均为正值的特征,改用中位数作中点配色更合理,如需保留原设置可改回0 name = "County population", label = scales::comma )
参数调整提示
- 如果觉得区域分界太粗/太细,直接修改
linewidth的数值即可 - 如果希望分界线条更柔和,可以把
color改成深灰色比如"#333333" - 如果需要单独突出某个普查区域的边界,也可以在
geom_sf里做条件映射单独设置线色
内容的提问来源于stack exchange,提问作者Agustín Indaco
相关产品推荐
相关产品推荐

