3

我用cowplot制作了一个网格:

library(ggplot2)
library(cowplot)

ggg1 <- ggplot(mtcars, aes(mpg,vs)) + geom_point() +
  theme(axis.title.x=element_blank(),
        axis.title.y=element_blank())
ggg2 <- ggplot(mtcars, aes(mpg,vs)) + geom_point() +
  theme(axis.title.x=element_blank(),
        axis.title.y=element_blank())
ggg3 <- ggplot(mtcars, aes(mpg,vs)) + geom_point() +
  theme(axis.title.x=element_blank(),
        axis.title.y=element_blank())
plot_grid(plot_grid(ggg1, ggg2, labels=c("", ""), ncol = 1), ggg3, labels=c("", ""), ncol = 2)

导致图像

在此处输入图像描述

(当然这只是一个最小的工作示例)。

现在我想要一个标题为“mpg”的 xaxis 和一个标题为“vs”的 yaxis - 每个都像这样居中:

在此处输入图像描述

我怎么能用ggplot做到这一点。我没有尝试过或add_sub如何使用 plot_grid 自定义边距和标签设置?工作。ggplot的答案:如何将常见的 x 和 y 标签添加到绘图网格不使用cowplot。我可以用cowplot做到这一点吗?draw_label

重要提示:我希望能够设置标签字体的大小。

4

2 回答 2

6

这似乎工作......

plot_grid(plot_grid(ggg1, ggg2, labels=c("", ""), ncol = 1), 
          ggg3, 
          labels=c("", ""), 
          ncol =2,  
          scale=0.9) + #perhaps reduce this for a bit more space
draw_label("xlab", x=0.5, y=  0, vjust=-0.5, angle= 0) +
draw_label("ylab", x=  0, y=0.5, vjust= 1.5, angle=90)

在此处输入图像描述

于 2018-03-30T16:29:40.900 回答
2

这是另一种策略

library(grid)
library(gridExtra)
library(egg)
grid.arrange(gtable_cbind(gtable_frame(ggarrange(ggg1, ggg2, draw=F)), 
                          gtable_frame(ggplotGrob(ggg3))),
             left = textGrob("Left",rot=90), 
             bottom = textGrob("Bottom"))

在此处输入图像描述

于 2018-03-30T19:50:22.173 回答