使用 ggarrange 添加行和列标题

Posted

技术标签:

【中文标题】使用 ggarrange 添加行和列标题【英文标题】:add row and column titles with ggarrange 【发布时间】:2020-06-06 09:51:21 【问题描述】:

我有一个 ggplots 列表,这些 ggplots 可能过于复杂而无法使用 facet_wrap 进行排列。所有地块必须共享相同的图例,并应排列在网格中。网格的每一列需要不同的标题,网格的每一行也需要不同的标题。 一个简单得离谱的例子:

library(ggplot2)
library(ggpubr)

plot1<- ggplot() + geom_point(aes(x=1, y=1, col="a"))
plot2<- ggplot() + geom_point(aes(x=1, y=1, col="a"))
plot3<- ggplot() + geom_point(aes(x=1, y=1, col="a"))
plot4<- ggplot() + geom_point(aes(x=1, y=1, col="a"))

plotlist<- list(plot1, plot2, plot3, plot4)

ggarrange(plotlist = plotlist, ncol = 2, nrow = 2, common.legend = TRUE, legend="bottom")

这会生成除列和行标题之外的所有内容,并且 annotate_figure 只为图形添加一个全局标题。所需的输出应如下所示:

【问题讨论】:

小提示:当所有对象都相同时,也可以使用plot1&lt;-plot2&lt;-plot3&lt;-plot4&lt;- 【参考方案1】:

我更喜欢patchwork 包。控制布局很容易。标题有点棘手。 Patchwork 使用每个绘图中的实验室 - 因此您可以将绘图标题添加到上部绘图,并可能在左侧绘图的 y 标签中添加一行。

可以说更简单的是创建标题作为情节并将它们添加到您的拼凑中。您可以轻松自定义布局,例如 explained in the patchwork vignette

library(ggplot2)
library(patchwork)

plot1<-plot2<-plot3<-plot4<- ggplot() + geom_point(aes(x=1, y=1, col="a"))

row1 <- ggplot() + annotate(geom = 'text', x=1, y=1, label="row 1 title", angle = 90) + theme_void() 

row2 <- ggplot() + annotate(geom = 'text', x=1, y=1, label="row 2 title", angle = 90) + theme_void() 

col1 <- ggplot() + annotate(geom = 'text', x=1, y=1, label="col 1 title") + theme_void() 

col2 <- ggplot() + annotate(geom = 'text', x=1, y=1, label="col 2 title") + theme_void() 

layoutplot <- "
#cccddd
aeeefff
aeeefff
bggghhh
bggghhh
"

plotlist <- list(a = row1, b = row2, c = col1, d = col2, e= plot1, f=plot2, g=plot3, h=plot4)

wrap_plots(plotlist, guides = 'collect', design = layoutplot)

由reprex package (v0.3.0) 于 2020 年 2 月 22 日创建

【讨论】:

以上是关于使用 ggarrange 添加行和列标题的主要内容,如果未能解决你的问题,请参考以下文章

使用jquery动态添加和删除表中的行和列

需要将值添加到现有的行和列中

DataTable添加行和列

Datatable中的某行某列能不能添加一个下拉框的控件

不能向没有列的 DataGridView 控件添加行.必须首先添加列.

Snapde怎么添加行和列