我在使用 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 轴,上面的两个图没有轴标签(又称共享轴图)。 注意图之间的空白区域。我想减少这些地块之间的空间,以便这三个地块几乎接触。
根据您的数据,也许使用
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