首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将ggforce::facet_grid_paginate的输出保存在一个pdf中?

如何将ggforce::facet_grid_paginate的输出保存在一个pdf中?
EN

Stack Overflow用户
提问于 2018-01-31 14:03:44
回答 2查看 5.7K关注 0票数 12

我正在使用ggforce包在几个页面上生成平面化的情节:

代码语言:javascript
复制
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

我知道这可以用reportspdftools包来完成,但我想知道是否有更直接的方法来实现这一点。我希望ggforce为输出提供单页的功能,但看起来并非如此?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-31 14:14:53

您甚至不需要使用ggsave,您可以通过以下方式将所有这些绘图放在一个pdf中:

代码语言:javascript
复制
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()
票数 26
EN

Stack Overflow用户

发布于 2019-10-14 09:29:08

我面临着一个类似的问题,这是我的解决方案,基本上是对Mike .答案的扩展。

通常,您想要绘制所有的页面,而且事先不知道您有多少页,而且您可能希望在标准的A4大小纸上打印。所以:

代码语言:javascript
复制
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(...),或者将它包装成一个专用函数。我想听听更好的解决办法..。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48544039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档