如何指定行数和列数以使用 gridExtra 每页打印多个图?

How do I specify the number of rows and columns to print multiple plots per page with gridExtra?

我已经使用 ggplot 通过 for 循环创建了许多图,并将每个图保存到列表中 plots

plots <- list()

for (i in 1:238)

{

    gene <- row.names(geneExpression)[i]

    df.sub <- df[ , c("source", gene)]

    names(test.sub) <- c("source", "exp")

    plots[[i]] <- ggplot() + geom_violin(data=test.sub, aes(source, exp, fill=source, color=source), alpha=.4, trim=F, environment = environment()) + coord_flip() + ggtitle(gene) + theme(legend.position="none") + labs(x="")

}

我正在按照其他地方的建议使用 gridExtra 函数,但是当我这样做时,它会在一页中打印所有绘图(240 个绘图)。

pdf("violinPlots.pdf")
do.call(grid.arrange, plots)
dev.off()

有什么方法可以指定每页 24 个绘图? (即 6 行 x 4 列?)

我试过了,但是 returns 出错了...

grid.arrange(plots, ncol=4, newpage = T )

您可以使用 gridExtra 的 marrangeGrob 函数:

pdf("violinPlots.pdf")
ml <- marrangeGrob(grobs = plots, nrow = 6, ncol = 4)
print(ml)
dev.off()