R ggplot 删除 x ticks/titles 而不删除留给他们的 space

R ggplot remove x ticks/titles without removing the space left for them

在 ggplot 中,通常情况下我想使用 grid.arrange()arrangeGrob() 创建多图,其中轴标签是多余的。以下图为例:

data = data.frame(x=1:50, y=50:1)
p1=ggplot(data, aes(x=x, y=y)) + geom_line() + xlab("Dimension") + ylab("Magnitude")
p2=ggplot(data, aes(x=x, y=-y)) + geom_line() + xlab("Dimension") + ylab("Magnitude")
grid.arrange(p1, p2, nrow=1)

很明显,标签"Dimenion"和"Magnitude"在最右边的图上是多余的。

我知道我可以轻松删除勾号、标签和标题:

p2=p2 +
    theme(axis.title.x=element_blank(),
          axis.text.x=element_blank(),
          axis.ticks.x=element_blank(),
          axis.title.y=element_blank(),
          axis.text.y=element_blank(),
          axis.ticks.y=element_blank())
grid.arrange(p1, p2, nrow=1)

但这让我在第二个数字上的边距被压扁了。我知道我可以通过 scale_x_continuousscale_y_continuous 手动完成此操作,而不是像我通过 theme() 那样用空白替换它们,我可以手动将所有内容设置为 "",但这很耗时,并且需要像 element_blank() 这样自动化程度较低的方法。

是否有类似简单的方法来移除标签,而不破坏它们之前占用的 space?像 element blank 没有 "assigns no space" 方面。

像这样?

#devtools::install_github("thomasp85/patchwork")
library(patchwork)
p1 + p2

别问我魔法是怎么运作的。您可以在此处阅读有关该功能的更多信息:github.com/thomasp85/patchwork