ggplot2绘图如何横向填充纸张(PDF)?

9
我正在尝试使用以下方法将绘图呈现为PDF:

我正在尝试使用以下方法将绘图呈现为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?


1
当您使用 ggsave("~/Desktop/test.pdf", ...) 并明确指定 widthheight 时会发生什么? - Beasterfield
ggsave()似乎可以使用8.5 / 11的高度/宽度。为了使用ggsave,我是否需要将所有绘图拼接成一个绘图,然后保存它?我有大约15个图形要输出到单个PDF以共享。 - Dave
每个单独的页面?在这种情况下(据我所知),ggsave 不起作用。 - Beasterfield
1个回答

13

请查看这个讨论,要点是你可能想使用paper=special并显式设置宽度和高度。

编辑:

这里有一个懒人技巧,可以使用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 循环就可以了,有时这样更加清晰明了)


1
一点也不懒惰!高效率! - TheSciGuy
就我个人而言,只有在将参数指定为列表时,这才对我起作用:p <- do.call(marrangeGrob, args = list(grobs = plots, ncol=1, nrow=1));否则,我会收到缺少参数的错误提示。 - Von

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接