我试图从列表中获取图并输出多页pdf。我可以使用gridExtra轻松地做到这一点:marrangeGrob但是我遇到了在正确的位置获取分页符的问题。我的数据是7组,所以我想要4页,每页有两个图,然后在第7个图之后休息,第8个图从新页面开始(如在第14个,第21个等之后)。
我的清单包含(目前有84 ggplots,未来可能更多)
我看了ggplot list of plots to one pdf with different page layouts,但我不想单独设置每个页面,因为它们有很多(我也可能希望每次更改为3或4页)最初的那些并且不想重新工作。
我已经使用钻石数据框做了一个例子,假设我想拆分页面,所以两个不同的清晰度的图表不在同一页面上
egsplitdf <- diamonds %>% distinct(color, clarity) %>% arrange(clarity)
egPlotfun <- function(i, filterdf){
dat = filter(diamonds, color == filterdf[["color"]][i] & clarity ==
filterdf[["clarity"]][i])
ggplot(dat, aes(x= x, y = y))+
geom_point()+
labs(title = paste(filterdf[["clarity"]][i], filterdf[["color"]][i]))
}
egPlots <- lapply(1:56, egPlotfun,filterdf = egsplitdf)
ArrangedPlots <- marrangeGrob(egPlots, nrow = 2, ncol = 1)
ggsave("egNotsplit.pdf", ArrangedPlots, height = 10,width = 7)
但是这只是连续的情节,在7等之后没有休息。 我也尝试将我的情节分成
列表plotseq <- lapply(0:8,function(x) seq(from = (x*7+1), length.out = 7))
ListofPlots <- lapply(plotseq, function(x) lapply(x, egPlotfun, filterdf = egsplitdf ))
testSplit <-marrangeGrob(ListofPlots , nrow = 2, ncol = 1)
ggsave("TrySplit.pdf", testSplit, height = 10,width = 7)
但这给出了: &#34; gList中的错误(list(list(data = list(carat = c)(0.32,1.01,0.43,1.22,: 只有&#39; grobs&#39;允许进入&#34; gList&#34;&#34;
有什么想法吗?