使用R脚本创建新西兰静态地图遇问题求助
解决新西兰地图显示极小的问题
你的问题根源是rnaturalearth的ne_countries返回的新西兰数据包含了其远在太平洋的附属小岛(如托克劳、查塔姆群岛等),这些小岛的极端坐标会把绘图范围拉到全球尺度,导致主岛被压缩成极小的点。以下是几种解决方法:
方法1:过滤掉面积过小的附属区域
通过计算每个地理单元的面积,只保留面积较大的主岛部分:
library(sf) library(ggplot2) library(rnaturalearth) library(rnaturalearthdata) library(ggspatial) library(dplyr) theme_set(theme_bw()) # 获取新西兰数据 newzealand <- ne_countries(country="New Zealand", type="countries", scale='large', returnclass = "sf") # 计算面积并过滤(保留面积大于1000平方公里的区域) newzealand_main <- newzealand %>% mutate(area = st_area(.)) %>% filter(area > units::set_units(1000, km^2)) # 绘图 ggplot(data = newzealand_main) + geom_sf()
方法2:手动限定绘图坐标范围
直接指定新西兰主岛的经纬度范围,缩小绘图视野:
ggplot(data = newzealand) + geom_sf() + # 新西兰主岛大致经纬度范围,可根据需求微调 coord_sf(xlim = c(166, 178), ylim = c(-47, -34))
方法3:使用更细分的区域数据
如果需要更精细的地图,可以调用ne_states获取新西兰的省级区域数据,默认只包含主岛相关区域:
newzealand_states <- ne_states(country = "New Zealand", returnclass = "sf") ggplot(data = newzealand_states) + geom_sf()
内容的提问来源于stack exchange,提问作者Miriam
相关产品推荐
相关产品推荐

