我正在创建具有4个相同地图的多面板图形。所有4个地图大小相同,排列整齐,直到我使用ggsn::scalebar向其中一个地块添加了比例尺。带有比例尺的打印将变为未对齐。
有谁知道怎么解决这个问题吗?事情不对劲的时候会让我抓狂。
示例代码:
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生成的比例尺的外观,所以如果有人知道如何解决上面列出的对齐问题,我仍然希望解决这个问题。
发布于 2020-11-17 08:06:25
使用patchwork尝试一下。函数wrap_plots()是一个处理程序,它可以以更好的方式排列绘图,以便在对齐方面获得更清晰的绘图:
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)输出将如下所示:

https://stackoverflow.com/questions/64867465
复制相似问题