使用ggplot

时间:2016-02-19 11:56:23

标签: r plot ggplot2 gridextra

我有一个循环生成的12个图,我想在一个页面上绘制3行2列(总共2页)。我知道如何在R

中做到这一点
pdf("1.pdf")
par(mfrow = c(3, 2))
for (i in 1:12) {
  x <- 1:10
  y <- 2*x + rnorm(x)
  plot(x, y)
}
dev.off()

但是如何使用ggplot执行此操作?

library(ggplot2)
library(grid)
library(gridExtra)
for (i in 1:12) {
  x <- 1:10
  y <- 2*x + rnorm(x)
  qplot(x, y)
}

我想我必须使用grid.arrange,但需要一些帮助。感谢。

2 个答案:

答案 0 :(得分:5)

您可能需要查看method1((NullPointerException)null)包,该包允许比仅使用裸cowplot更多的灵活性。

这很有效 - 尽管有点不合理:

grid.arrange

另一个更优雅但有点迟钝的方法是library(ggplot2) library(grid) library(gridExtra) lg <- list() for (i in 1:12) { x <- 1:10 y <- 2*x + rnorm(x) lg[[i]] <- qplot(x, y) } grid.arrange(lg[[1]],lg[[2]],lg[[3]],lg[[4]],lg[[5]],lg[[6]],nrow=3,ncol=2) grid.arrange(lg[[7]],lg[[8]],lg[[9]],lg[[10]],lg[[11]],lg[[12]],nrow=3,ncol=2) 如下(感谢Axeman和甜菜根 - 注意评论)。

grid.arrange

或者这个:

do.call(grid.arrange, c(lg[1:6], nrow = 3))
do.call(grid.arrange, c(lg[7:12], nrow = 3))

它们都导致了这一点 - (想想其中两个 - 无论如何它们看起来都一样):

enter image description here

答案 1 :(得分:2)

marrangeGrob是一个方便的多页包装器,

marrangeGrob(lg, ncol=2, nrow=3)

或者您可以明确地致电grid.arrange()两次,

grid.arrange(grobs = lg[1:6], ncol=2)
grid.arrange(grobs = lg[7:12], ncol=2)