【问题标题】:ggplot2 plot fill page in landscape (pdf)ggplot2 横向绘制填充页面 (pdf)
【发布时间】:2013-04-25 11:10:27
【问题描述】:

我正在尝试使用以下方法将绘图渲染为 PDF:

pdf('~/Desktop/test.pdf', bg = "white", paper="USr")    
p <- ggplot(df, aes(something)) + geom_bar();
print(p)
# I'm actually printing a bunch of graphs to the PDF
dev.off()

PDF 功能中的“USr”正在设置 PDF 以横向模式打印。该图已生成并位于页面中心,但右侧/左侧边距较大,并且该图未按比例缩小以占用可用的全部 11 英寸。

我已经尝试对 pdf(...) 命令和 ggplot 本身进行一些调整。是否有这种方式的解决方案,还是我需要使用专用的报告/pdf 包,如 sweave 或 knitr?

【问题讨论】:

  • 当您使用ggsave( "~/Desktop/test.pdf", ... ) 并明确指定width 和height 时会发生什么?
  • ggsave() 似乎适用于 8.5/11 的高度/宽度。为了使用 ggsave 我必须将我的所有地块缝合到一个地块中然后保存吗?我有大约 15 个图要全部输出到一个 PDF 中以供分享。
  • 每个都在一个页面上?在这种情况下(AFAIK)ggsave 将不起作用。

标签: r ggplot2 knitr sweave


【解决方案1】:

见this discussion;底线是您可能想要使用 paper=special 并明确设置宽度和高度。

编辑:

这是一个懒惰的trick 使用 ggsave 与多个页面,

library(ggplot2)
plots = replicate(8, qplot(1,1), simplify=FALSE)
library(gridExtra)
p <- do.call(marrangeGrob, c(plots,ncol=1,nrow=1))

ggsave("multipage.pdf", p, width=11, height=8.5)

(但除此之外,pdf(...) 后跟 for 循环就好了,有时更清晰)

【讨论】:

  • 一点都不懒!高效!
  • FWIW,这仅在我将 marrangeGrob 的参数指定为列表时才对我有用:p &lt;- do.call(marrangeGrob, args = list(grobs = plots, ncol=1, nrow=1));否则我得到一个缺少参数的错误
猜你喜欢
  • 1970-01-01
  • 2016-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-13
  • 1970-01-01
  • 2014-07-23
  • 2015-01-06
相关资源
最近更新 更多