如何移除ggplot地图刻度的N/W标识及方框并修正经度显示?
处理ggplot+rnaturalearth地图刻度标签的格式问题
问题场景
用rnaturalearth加载底图后,ggplot生成的地图刻度会自带N、W标识和方框,需要把这些多余元素去掉,同时将经度调整为-0至-70的负数格式。
解决方案
通过自定义刻度标签函数,配合scale_x_continuous和scale_y_continuous替换默认的地理格式标签,同时调整主题样式移除方框:
library(tidyverse) library(rnaturalearth) world <- ne_countries(scale = "medium", returnclass = "sf") # 自定义经度标签:转成负数格式,去掉W标识 format_lon <- function(x) { # 把原本的西经正数转为带负号的格式 ifelse(x > 0, paste0("-", x), as.character(x)) } # 自定义纬度标签:去掉N标识,直接输出数值 format_lat <- function(x) as.character(x) ggplot() + geom_sf(data = world, colour = NA, fill = "grey75") + coord_sf(ylim = c(43, 72), xlim = c(-68, -2)) + # 应用自定义刻度标签 scale_x_continuous(labels = format_lon) + scale_y_continuous(labels = format_lat) + labs(x = "", y = "") + theme_bw() + # 移除刻度旁的方框(部分主题默认带的边框) theme( axis.text.x = element_text(margin = margin(t = 6)), axis.text.y = element_text(margin = margin(r = 6)) )
关键说明
- 经度格式调整:
format_lon函数把原本显示为正数的西经数值转为带负号的字符串,直接覆盖默认的"W"标识格式 - 移除纬度标识:
format_lat函数直接输出纬度数值,去掉默认的"N"标识 - 移除方框:通过
theme调整坐标轴文本的边距,消除部分主题自带的刻度方框样式
内容的提问来源于stack exchange,提问作者tnt
相关产品推荐
相关产品推荐

