r - 使用 ggplot 在一页上绘制多个图

标签 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,但需要一些帮助。谢谢。

最佳答案

您可能想看看 cowplot 包,它比仅使用裸露的 grid.arrange 具有更大的灵 active 。

这可行 - 尽管有点不优雅:

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)

另一种更优雅但有点迟钝的grid.arrange方法如下(感谢 Axeman 和 beetroot - 请注意评论)。

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

或者这个:

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

它们都会导致这样的结果 - (想想其中的两个 - 无论如何它们看起来都是一样的):

enter image description here

关于r - 使用 ggplot 在一页上绘制多个图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35504741/

相关文章:

r - 最长非零值字符串的总和

r - 在R中,如何绘制到内存缓冲区而不是文件中?

plot - 等高线之间具有恒定颜色的填充等高线图

r - 我如何绘制时间 (HH :MM:SS) in X axis in R

r - 调整连续变量的图例宽度

r - 在 ggplot 中使用 facet wrap 时遇到问题

在条形图中重新缩放 y 轴会导致条形消失 : R ggplot2

r - foreach/SNOW/doSNOW 使用 RTerm 进行详细输出,但不使用 RGui

r - 密度图矩阵,每个图覆盖两个分布

matlab - 如何向图表添加适当的噪声