如何在ggplot2中使用“ grid.arrange”在特定位置留下空白而没有图形

我有8个地块(P1P2P3P4P5P6P7P8),为了便于说明,我希望将它们全部显示(即以3x3的图形形式)。但是,出于说明目的,我想在上一行显示P1P2,在中间一行显示P3P4P5,并在下方一行中的P6P7P8

我该如何安排地块才能做到呢?例如,我想在右上角留下空白。到目前为止,我已经做到了:

grid.arrange(P1,P2,P3,P4,P5,P6,P7,P8,ncol=3)

有人知道怎么做吗?

miaoxiaoyun5211314 回答:如何在ggplot2中使用“ grid.arrange”在特定位置留下空白而没有图形

您可以使用layout_matrix的{​​{1}}选项。您只需要构建一个矩阵,其中每个单元格的值指示应在矩阵的该部分绘制哪个图。这是一个例子

grid.arrange

enter image description here

由于矩阵必须具有一致数量的行和列,因此我们创建一个具有6列的列。我们将左上三个单元格分配给图1,将右上三个单元格分配给图2,然后在其余的行上,为每个图分配两个单元格。

# sample plots
library(ggplot2)
P <- lapply(1:8,function(i) ggplot(data.frame(x=1,y=1),aes(x,y)) + geom_text(label=i))

# create layout
m <- matrix(c(rep(1:2,each=3),rep(3:8,each=2)),ncol=6,byrow=TRUE)
grid.arrange(grobs=P,layout_matrix = m)

如果您只想在其中一个位置上使用空白单元格,则可以在布局矩阵中使用NA(并返回使用3x3矩阵,因为我们不需要匹配两列和三列) / p>

# m
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    1    1    2    2    2
[2,]    3    3    4    4    5    5
[3,]    6    6    7    7    8    8

enter image description here

本文链接:https://www.f2er.com/3093976.html

大家都在问