使用cowplot包的muliplot中心X轴标签

时间:2015-10-13 23:42:53

标签: r ggplot2 cowplot

我有一个多色图,由2个2x2配置的4个图组成。我使用"牛皮画"来安排情节。包和plot_grid函数使用下面的代码

plot_grid(p1, p2, p3, p4, align='vh', vjust=1, scale = 1)

其中p1-p4是我的4个图。结果图的x轴标签与多个图中的每列相关联:

enter image description here

有没有人知道我如何使用牛皮图或其他方式编码以多色标底部为中心的单个x轴标签?

2 个答案:

答案 0 :(得分:6)

这有点晚了,但我遇到了同样的问题,所以希望下一个查看此问题的人会发现这个问题很有用。

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))

答案 1 :(得分:6)

另一种选择是使用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))

enter image description here