使用 ggarrange 减少绘图之间的空间

问题描述 投票:0回答:1

我在使用 ggarrange 时遇到了绘图之间空间过大的问题。我知道有一个解决方案可以使用 grid.arrange 来减少空白空间,但我一直在使用 ggarrange,因为它有很好的选项(又名“对齐”和“标签”,如此处所用)。

使用 ggarrange 和 grid.arrange 的其他答案建议更改绘图边距(我在本示例中尝试这样做),但这似乎并不能解决我的问题。我认为因为即使我已经清空了 x 轴,图之间仍然存在空白空间,其中“空白”轴仍然占用空间。

这是我的例子:

library(ggplot2)
library(ggpubr)

x<-seq(1,10)
y<-seq(10,1)

DF<-data.frame(x,y)

p1<- ggplot(DF, aes(x=x,y=y)) + 
  labs(x="Xlab", y="Ylab") +
  geom_line()+
  theme_bw()
  
  
p1TopNoX<-p1 + theme(axis.title.x=element_blank(),
                     axis.text.x=element_blank(),
                     axis.ticks.x=element_blank(),
                     plot.margin = margin(1, 1, 0, 0, "cm"))


p1MidNoX<-p1 + theme(axis.title.x=element_blank(),
                     axis.text.x=element_blank(),
                     axis.ticks.x=element_blank(),
                     plot.margin = margin(1, 1, 0, 0, "cm"))

p1BotX<-p1 + theme(plot.margin = margin(1, 1, 1, 0, "cm"))

ggarrange(p1TopNoX, p1MidNoX, p1BotX,
          nrow=3, labels = c("A","B", "C"), align= 'hv', 
          hjust=-4.5, vjust=3, font.label=list(color="black",size=25))

我的目标是让底部图显示 x 轴,上面的两个图没有轴标签(又称共享轴图)。 注意图之间的空白区域。我想减少这些地块之间的空间,以便这三个地块几乎接触。

r ggplot2 ggpubr
1个回答
0
投票

根据您的数据,也许使用

facet_wrap()
会更容易?例如

library(tidyverse)

x<-seq(1,10)
y<-seq(10,1)

DF<-data.frame(x,y)

DF %>%
  bind_rows(list(DF, DF), .id = "id")
#>    id  x  y
#> 1   1  1 10
#> 2   1  2  9
#> 3   1  3  8
#> 4   1  4  7
#> 5   1  5  6
#> 6   1  6  5
#> 7   1  7  4
#> 8   1  8  3
#> 9   1  9  2
#> 10  1 10  1
#> 11  2  1 10
#> 12  2  2  9
#> 13  2  3  8
#> 14  2  4  7
#> 15  2  5  6
#> 16  2  6  5
#> 17  2  7  4
#> 18  2  8  3
#> 19  2  9  2
#> 20  2 10  1
#> 21  3  1 10
#> 22  3  2  9
#> 23  3  3  8
#> 24  3  4  7
#> 25  3  5  6
#> 26  3  6  5
#> 27  3  7  4
#> 28  3  8  3
#> 29  3  9  2
#> 30  3 10  1
DF %>%
  bind_rows(list(DF, DF), .id = "id") %>%
  ggplot(aes(x=x,y=y)) + 
  labs(x="Xlab", y="Ylab") +
  geom_line()+
  theme_bw() +
  facet_wrap(~ id, ncol = 1)

创建于 2024-04-11,使用 reprex v2.1.0

© www.soinside.com 2019 - 2024. All rights reserved.