我正在使用ggforce包在几个页面上生成平面化的情节:
library(ggforce)
for(i in 1:6){
ggplot(diamonds) +
geom_point(aes(carat, price), alpha = 0.1) +
facet_wrap_paginate(~cut:clarity, ncol = 2, nrow = 2, page = i)
ggsave(paste0("~/diamonds_", i, ".pdf"))
}生成预期的6个PDF文件:

最简单的方法是在中输出一个只有6页的pdf?
我知道这可以用reports和pdftools包来完成,但我想知道是否有更直接的方法来实现这一点。我希望ggforce为输出提供单页的功能,但看起来并非如此?
发布于 2018-01-31 14:14:53
您甚至不需要使用ggsave,您可以通过以下方式将所有这些绘图放在一个pdf中:
pdf("~/diamonds_all.pdf")
for(i in 1:6){
print(ggplot(diamonds) +
geom_point(aes(carat, price), alpha = 0.1) +
facet_wrap_paginate(~cut:clarity, ncol = 2, nrow = 2, page = i))
}
dev.off()发布于 2019-10-14 09:29:08
我面临着一个类似的问题,这是我的解决方案,基本上是对Mike .答案的扩展。
通常,您想要绘制所有的页面,而且事先不知道您有多少页,而且您可能希望在标准的A4大小纸上打印。所以:
library(ggforce)
gg <- ggplot(diamonds) +
geom_point(aes(carat, price)) +
facet_wrap_paginate(~cut:clarity, ncol = 2, nrow = 2, page = 1)
n <- n_pages(gg)
pdf('diamonds.pdf', paper= 'A4', w= 210/25.4, 297/25.4)
for(i in 1:n){
print(gg + facet_wrap_paginate(~cut:clarity, ncol = 2, nrow = 2, page = i))
}
dev.off()代码应该是不言而喻的。最糟糕的是,您必须重复两次facet_wrap_paginate(...),或者将它包装成一个专用函数。我想听听更好的解决办法..。
https://stackoverflow.com/questions/48544039
复制相似问题