首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加ggsn::scalebar()会导致图在多面板图形中未对齐

添加ggsn::scalebar()会导致图在多面板图形中未对齐
EN

Stack Overflow用户
提问于 2020-11-17 07:59:33
回答 1查看 64关注 0票数 0

我正在创建具有4个相同地图的多面板图形。所有4个地图大小相同,排列整齐,直到我使用ggsn::scalebar向其中一个地块添加了比例尺。带有比例尺的打印将变为未对齐。

有谁知道怎么解决这个问题吗?事情不对劲的时候会让我抓狂。

示例代码:

代码语言:javascript
复制
library(ggsn)
library(ggplot2)
library(sf)
library(gridExtra)

nc <- st_read(system.file("shape/nc.shp", package="sf"))


A <- ggplot() +
  geom_sf(data = nc) +
  theme_bw()

B <- A +
  scalebar(nc, dist = 50, dist_unit = "km", transform = T,  height = 0.02, st.dist =0.05, border.size = 0.5,  st.size = 4)

grid.arrange(A, A, A, B, ncol = 2, nrow = 2)

更新:

使用ggspatial::annotation_scale(...)而不是ggsn::scalebar(...)可以添加比例尺,而不会产生打印对齐问题。

但是,我更喜欢使用ggsn生成的比例尺的外观,所以如果有人知道如何解决上面列出的对齐问题,我仍然希望解决这个问题。

EN

回答 1

Stack Overflow用户

发布于 2020-11-17 08:06:25

使用patchwork尝试一下。函数wrap_plots()是一个处理程序,它可以以更好的方式排列绘图,以便在对齐方面获得更清晰的绘图:

代码语言:javascript
复制
library(ggsn)
library(ggplot2)
library(sf)
library(patchwork)

nc <- st_read(system.file("shape/nc.shp", package="sf"))


A <- ggplot() +
  geom_sf(data = nc) +
  theme_bw()

B <- A +
  scalebar(nc, dist = 50, dist_unit = "km", transform = T,  height = 0.02, st.dist =0.05, border.size = 0.5,  st.size = 4)
#Code
wrap_plots(list(A, A, A, B),ncol = 2, nrow = 2)

输出将如下所示:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64867465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档