ggplot 图表列表到一个具有不同页面布局的 pdf

ggplot list of plots to one pdf with different page layouts

我想制作一个包含多页 ggplots 的 pdf。使用 gridExtra,我还可以构建具有 m x n 布局的绘图页面(m 行绘图,n 列绘图)。

函数 ggsave 允许我写一页图,即使是那些用 gridExtra 构建的具有 m x n 布局的图。

使用 arrangeGrob 甚至可以 ggsave 多个页面到一个 pdf,只要每个页面具有相同的 m x n 布局。

我想知道如何 ggsave 具有不同页面布局的地块列表?例如,我有一个列表,l,长度为 3 代表 3 页。

l[[1]] 是一个 2 x 2 布局的页面,有 4 个绘图

l[[2]]2 x 1 有 2 个地块

l[[3]] 只是 1 x 1

我如何破解 ggsave 以便我可以将列表 l 写入 1 个 pdf 文件,其中 3 个页面具有不同的布局?这些图应横向显示,因此通常命令的形式为

ggsave("multipage.pdf", do.call(arrangeGrob, myplots[[i]]), width=11, height=8.5)

您可以使用与 marrangeGrob

相同的 class 技巧
library(ggplot2)
library(gridExtra)
pl <- lapply(1:7, function(i) ggplot() + ggtitle(i))

ppl <- list(p1 = arrangeGrob(grobs=pl[1:4]),
            p2 = arrangeGrob(grobs=pl[5:6]),
            p3 = arrangeGrob(grobs=pl[7]))

class(ppl) <- c("arrangelist", class(pl))

ggsave("multipage.pdf", ppl)