You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言使用rnaturalearth绘制世界地图时消除上下空白的方法

解决rnaturalearth绘制世界地图时的上下空白问题

你的问题主要出在两个地方:一是代码存在语法错误导致部分设置未生效,二是默认投影和画布比例不匹配。以下是彻底消除所有空白的完整方案:

完整可行代码

library(rnaturalearth)
library(ggplot2)
library(sf)

# 获取世界地图数据(type="map_units"可省略,不影响结果)
world <- ne_countries(scale = "small", returnclass = "sf")

# 绘制无空白世界地图
p <- ggplot() +
  geom_sf(data = world, fill = "#cccccc", color = "#333333") +
  # 关键:使用圆柱投影消除上下空白,关闭扩展边距
  coord_sf(expand = FALSE, crs = st_crs("ESRI:54009")) +
  # 彻底清除所有多余元素
  theme_void() +
  theme(
    plot.margin = margin(0, 0, 0, 0, unit = "pt"),
    plot.background = element_rect(fill = "white", color = NA)
  )

# 保存图片,设置匹配地图的宽高比(2.5:1左右)
ggsave("world_map_no_margins.jpg", plot = p, width = 10, height = 4, dpi = 300, bg = "white")

关键设置说明

  1. 修复语法错误:你之前的代码中,ggthemes::theme_map()后面缺少+,导致coord_sf(expand = FALSE)和后续主题设置完全没生效,这是核心问题之一。
  2. 选择合适投影:ESRI:54009是世界圆柱等面积投影,能让地图横向铺满画布,纵向没有多余空白,比默认的WGS84投影更适合全图展示。
  3. 关闭扩展边距:expand = FALSE强制移除ggplot默认添加的画布边缘空白,让地图紧贴画布边界。
  4. 彻底清除主题元素:theme_void()直接移除所有轴、网格、标题,再配合plot.margin = margin(0,0,0,0)清除画布外的所有边距。
  5. 匹配宽高比:世界地图的实际宽高比约为2.5:1(比如10x4),保存时用这个比例能让地图刚好填满画布,不会出现上下或左右空白。

内容的提问来源于stack exchange,提问作者ClaireR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 05:38:11