如何为ggspatial比例尺及标签添加适配纯色背景框
如何为ggspatial包annotation_scale生成的完整比例尺添加自动适配的纯色背景框
问题背景
- 制作包含线要素、面要素的系列地图时,
ggspatial::annotation_scale()生成的比例尺(含配套文本标签)经常和地图内的线要素重合、或被图面裁切,显示效果杂乱。 - 约束说明:
- 示例中可将比例尺移动到图面底部获得更好效果,但实际业务数据不存在可放置比例尺的“安全空白角落”,需要批量生成整组地图,无法逐个手动调整比例尺的最佳放置位置
- 本次制作的地图涵盖多种比例尺范围,无法使用需要手动调整宽度的固定尺寸背景框
- 为和已完成的地图保持风格一致性,比例尺必须保留在地图边框内部
- 可接受不使用ggspatial包的实现方案,但不能脱离ggplot绘图生态;此前尝试ggsn包时遇到使用障碍,未找到其他可行方案
复现代码
library(ggplot2) #> Warning: package 'ggplot2' was built under R version 4.0.5 library(sf) #> Warning: package 'sf' was built under R version 4.0.5 #> Linking to GEOS 3.9.1, GDAL 3.2.1, PROJ 7.2.1 library(ggspatial) #> Warning: package 'ggspatial' was built under R version 4.0.5 # 调用sf包自带默认数据集 nc <- sf::st_read(system.file("shape/nc.shp", package = "sf"), quiet = TRUE) plt <- ggplot(nc) + geom_sf()+ coord_sf(crs = st_crs(nc), datum = sf::st_crs(nc), xlim = c(-81.5,-79.5), ylim = c(34,36.02) )+ annotation_scale(aes(width_hint = 0.3, location = "tl")) plt
示例运行效果

注:上述示例于2022-07-01通过reprex包(v0.3.0)创建
内容的提问来源于stack exchange,提问作者Sarah
相关产品推荐
相关产品推荐

