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

ggplot绘制EPSG4087投影世界地图时坐标轴刻度错误求助

解决ggplot绘制投影地图时坐标轴刻度偏差问题

问题原因

你使用的EPSG:4087是WGS 84 等距圆柱投影,单位为米。ggplot默认会显示投影后的坐标数值(米),而你预期的是经纬度(度)单位——1度经度在赤道约等于111320米,这就是刻度看起来偏差10^5倍的根本原因。

解决方法

如果希望坐标轴显示经纬度(度)而非投影后的米数,只需在coord_sf中添加datum = st_crs(4326)参数,同时简化geom_sf的写法(sf对象会自动识别geometry列,无需手动指定):

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

mapData = ne_countries(returnclass = 'sf')
# 指定投影CRS,同时设置datum为WGS84(经纬度坐标系)
ggplot(mapData) +
  geom_sf() +
  coord_sf(crs = st_crs(4087), datum = st_crs(4326))

补充说明

  • 你之前手动指定geometry = mapData$geometry是冗余操作,sf对象在geom_sf中会自动调用geometry列,去掉后不会影响绘图,还能避免潜在的数据源冲突。
  • 添加散点图时,ggplot会自动将经纬度坐标转换为coord_sf指定的投影坐标,所以点的位置正确,但刻度仍显示投影后的米数——本质是你混淆了投影坐标(米)和地理坐标(度)的单位差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 12:42:38