我有一个多图图形,由 2x2 配置中的 4 个图组成。我使用“cowplot”包和 plot_grid 函数使用下面的代码排列图
plot_grid(p1, p2, p3, p4, align='vh', vjust=1, scale = 1)
其中 p1-p4 是我的 4 个地块。生成的图形具有与多图中的每一列相关联的 x 轴标签:
有谁知道我如何用cowplot或其他方式编写一个以多图底部为中心的单个x轴标签?
另一种选择是用于textGrob
为常见的 x 和 y 标签添加注释。
在此示例中,如果您希望删除单个轴标签,只需包含theme(axis.title = element_blank())
在绘图调用中。(或者,对于 y 轴,使用theme(axis.title.y=element_blank())
)。
library(ggplot2)
library(cowplot)
library(grid)
library(gridExtra)
ToothGrowth$dose <- as.factor(ToothGrowth$dose)
#make 4 plots
p1<-ggplot(ToothGrowth, aes(x=dose, y=len)) +
geom_boxplot()
p2<-ggplot(ToothGrowth, aes(x=dose, y=supp)) +
geom_boxplot()
p3<-ggplot(ToothGrowth, aes(x=supp, y=len)) +
geom_boxplot()
p4<-ggplot(ToothGrowth, aes(x=supp, y=dose)) +
geom_boxplot()
#combine using cowplot
plot<-plot_grid(p1, p2, p3, p4, align='vh', vjust=1, scale = 1)
#create common x and y labels
y.grob <- textGrob("Common Y",
gp=gpar(fontface="bold", col="blue", fontsize=15), rot=90)
x.grob <- textGrob("Common X",
gp=gpar(fontface="bold", col="blue", fontsize=15))
#add to plot
grid.arrange(arrangeGrob(plot, left = y.grob, bottom = x.grob))
这有点晚了,但我遇到了同样的问题,所以希望下一个查看这个问题的人会发现这很有用。
library(cowplot)
plot<-plot_grid(p1, p2, p3, p4, align='vh', vjust=1, scale = 1)
ggdraw(add_sub(plot, "Label", vpadding=grid::unit(0,"lines"),y=6, x=0.5, vjust=4.5))