如何在ggplot2地图中移除南极洲边界?
如何在ggplot的borders()中排除南极洲?
你可以通过borders()的regions参数直接排除南极洲,不需要用ylim来裁剪。有两种简洁的实现方式:
方法1:提前生成排除南极洲的区域列表
先提取所有世界区域,移除南极洲后传给regions参数:
library(dplyr) library(ggplot2) library(maps) # 获取除南极洲外的所有区域 world_regions <- map_data("world") %>% pull(region) %>% unique() %>% setdiff("Antarctica") # 绘制地图:自定义多边形数据 + 过滤后的边界 ggplot() + geom_polygon(data = map_data("world") %>% filter(region != "Antarctica"), aes(x = long, y = lat, group = group)) + borders(regions = world_regions)
方法2:直接给regions传过滤函数
borders()的regions参数支持传入一个筛选函数,写法更简洁高效:
library(dplyr) library(ggplot2) library(maps) ggplot() + geom_polygon(data = map_data("world") %>% filter(region != "Antarctica"), aes(x = long, y = lat, group = group)) + borders(regions = ~.x != "Antarctica")
原理很直接:borders()默认会加载完整的世界地图数据,所以之前单独过滤geom_polygon的数据不会影响边界层。通过regions参数明确指定要包含的区域(排除南极洲),就能让边界只绘制目标区域的轮廓。
内容的提问来源于stack exchange,提问作者mb1994
相关产品推荐
相关产品推荐

