使用 ggplot 在一页上绘制多个图
Multiple plots on one page using ggplot
我有 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
更灵活。
这有效 - 尽管有点不优雅:
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)
它们都会导致这个 -(想想其中两个 - 它们看起来都一样):
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)
我有 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
更灵活。
这有效 - 尽管有点不优雅:
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)
它们都会导致这个 -(想想其中两个 - 它们看起来都一样):
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)