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

时间:2015-04-16 17:49:51

标签: r plot ggplot2 pdf-generation 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行×4列?)

我尝试了这个,但它返回错误......

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

1 个答案:

答案 0 :(得分:2)

您可以使用gridExtra的marrangeGrob功能:

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