如何在R语言的美国地图中绘制多州组合的边界线?
实现多州组合的整体边界绘制(基于ggplot2)
核心思路
用usmap获取目标州的地理数据,通过sf包的空间合并功能生成多州的整体边界,再用ggplot2叠加绘制粗边界效果。
步骤与代码
- 加载所需包
library(usmap) library(ggplot2) library(sf) library(dplyr)
- 获取目标州的地理数据并转换为sf格式
# 定义目标州缩写,示例为第五巡回法院的TX、LA、MS target_states <- c("TX", "LA", "MS") # 获取州级地图数据并筛选目标州 state_data <- get_usmap(regions = "states", include = target_states) %>% as_sf() # 转换为sf对象方便空间操作
- 合并多州多边形,生成整体边界
# 合并所有目标州的多边形,得到联合区域 union_boundary <- state_data %>% st_union() %>% st_sf() # 转换为可用于ggplot的sf对象
- 用ggplot2绘制地图与粗边界
ggplot() + # 绘制目标州的填充底图 geom_sf(data = state_data, fill = "#f0f0f0", color = "#cccccc") + # 叠加整体粗边界,设置颜色和线宽 geom_sf(data = union_boundary, fill = NA, color = "#000000", linewidth = 1.5) + # 适配usmap的坐标系 coord_sf(crs = usmap_crs()) + # 移除默认坐标轴,简化地图样式 theme_void()
补充说明
- 若要绘制其他联邦巡回法院辖区,只需替换
target_states为对应辖区的州缩写即可。 - 之前用
alphahull失败多是因为未统一空间格式或参数设置不当,st_union是更直接的空间合并方式,无需手动调整复杂参数。
内容的提问来源于stack exchange,提问作者duckmayr
相关产品推荐
相关产品推荐

