2015-04-16 14 views
1

我使用ggplot通过for循环创建了多个图,并将每个图保存到列表plots中。如何使用gridExtra指定每页打印多个图的行数和列数?

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) 

回答

2

您可以使用gridExtra的marrangeGrob功能:

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

谢谢你,大卫! – gaelgarcia

相关问题