Cowplot plot_grid从ggplot分面条带中删除空间

kb5ga3dv  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(158)

我正在用plot_grid组装两个ggplot对象,每个对象使用相同的面,以给予一个网格图的效果,但x轴不同。我只需要第一个ggplot对象上的面文本,然而,plot_grid似乎为第二个图形中删除的面条带保留了空间。有没有解决这个问题的方法,或者用cowplot实现这个效果的不同方法?
作为一个例子,这里有一些代码:

dat <- tibble(x1=1:10, x2=20:11, y=rnorm(x2/2 - x1), lab=rep(c("A", "B"), 5))

p1 <- ggplot(dat, aes(x1, y)) +
    geom_point() +
    facet_wrap(~lab, nrow=1) +
    theme(plot.margin=unit(c(0, 0, 0, 0), "in"))

p2 <- ggplot(dat, aes(x2, y)) +
    geom_point() +
    facet_wrap(~lab, nrow=1) +
    theme(plot.margin=unit(c(0, 0, 0, 0), "in")

plot_grid(p1, p2, nrow=2, align="h")

我可以很好地删除最下面一行的面:

p2 <- ggplot(dat, aes(x2, y)) +
    geom_point() +
    facet_wrap(~lab, nrow=1) +
    theme(
        plot.margin=unit(c(0, 0, 0, 0), "in"), 
        strip.background=element_blank(), 
        strip.text=element_blank()
    )

p2

但当我添加到网格中时,条带的空间突然又出现了:

plot_grid(p1, p2, nrow=2, align="h")

有趣的是,当我从两行中删除条带时,两行的间距正确地不存在。
这是怎么回事?有人能提出解决办法吗?

kognpnkq

kognpnkq1#

这就是你要找的吗?

可以通过删除第一个图的所有图元来实现此目的:(在您的p1呼叫或plot_grid中)

library(ggpubr)

plot_grid(p1 +
            rremove("xlab") +
            theme(axis.title.x=element_blank(),
                  axis.text.x=element_blank(),
                  axis.ticks.x=element_blank()),
          p2,
          nrow = 2)

相关问题