如何在ggplot2地图中移除南极洲并复现散点式地图教程
嘿,我来帮你搞定移除南极洲的问题!你用maps包绘制世界地图时,默认会包含南极洲,这里有几个简单实用的方法可以解决,还能完美适配你原来的散点地图教程:
方法1:直接排除南极洲区域
borders()函数可以通过exclude参数指定不绘制的区域,地图数据里南极洲的名称是"Antarctica",直接传这个参数就行:
library(readr) library(dplyr) library(ggplot2) library(maps) library(ggthemes) # 读取你的RLadies数据 url_csv <- 'https://raw.githubusercontent.com/d4tagirl/R-Ladies-growth-maps/master/rladies.csv' rladies <- read_csv(url(url_csv)) %>% select(-1) # 绘制不含南极洲的地图 + 散点 ggplot() + borders("world", colour = "gray85", fill = "gray80", exclude = "Antarctica") + geom_point(data = rladies, aes(x = lon, y = lat), color = "#88398A", size = 2) + theme_map()
这个方法最直接,相当于告诉绘图函数直接跳过南极洲的图层,完全不会加载它的绘制数据。
方法2:通过坐标范围裁剪可视区域
如果第一种方法因为地图数据名称差异没生效(偶尔会有这种情况),可以用coord_map()限制显示的纬度范围——南极洲基本都在南纬60度以南,我们把纬度下限设为-60就能把它裁掉:
ggplot() + borders("world", colour = "gray85", fill = "gray80") + geom_point(data = rladies, aes(x = lon, y = lat), color = "#88398A", size = 2) + coord_map(xlim = c(-180, 180), ylim = c(-60, 90)) + # 限制纬度在-60到90之间 theme_map()
这种方式是从视觉上隐藏南极洲,适合只需要调整显示效果、不需要修改底层地图数据的场景。
方法3:用更现代的地理数据工具(可选)
如果你想更灵活地处理地理数据,推荐用sf+rnaturalearth的组合,它们能提供更精准的地图数据,过滤南极洲也更直观:
先安装依赖包(如果没装过):
install.packages(c("sf", "rnaturalearth"))
然后绘制地图:
library(sf) library(rnaturalearth) # 获取不含南极洲的世界地图数据 world_sf <- ne_countries(returnclass = "sf") %>% filter(name != "Antarctica") # 绘制散点地图 ggplot() + geom_sf(data = world_sf, colour = "gray85", fill = "gray80") + geom_point(data = rladies, aes(x = lon, y = lat), color = "#88398A", size = 2) + theme_map()
这个方法的优势是后续可以对地理数据做更多高级操作,比如区域筛选、投影转换等。
内容的提问来源于stack exchange,提问作者Vasilis
相关产品推荐
相关产品推荐

