R ggplot2:使用pdf()和ggplot_gtable()/ ggplot_build()绘制之前的空白页

时间:2017-09-22 05:25:50

标签: r pdf ggplot2

我需要修改一些情节的注释,所以我必须保存ggplot2图并做

ggplot_build(plot.obj)

然后用

绘制它
plot(ggplot_gtable(ggplot_build(plot.obj)))

问题是,当我将其保存在像这样的pdf中时

pdf(file="test.pdf")
  plot(ggplot_gtable(ggplot_build(plot.obj)))
dev.off()

结果pdf在绘图页面前有一个空白页面...我该如何避免这个?

检查此MWE

data(iris)
library(ggplot2)
box <- ggplot(data=iris, aes(x=Species, y=Sepal.Length)) +
    geom_boxplot(aes(fill=Species)) +
    ylab("Sepal Length") + ggtitle("Iris Boxplot") +
    stat_summary(fun.y=mean, geom="point", shape=5, size=4) 
box2 <- ggplot_build(box)
#I do stuff here
pdf(file="test.pdf")
  plot(ggplot_gtable(box2))
dev.off()

问题是如何在没有该空白页的情况下使用ggplot_gtable制作pdf?

2 个答案:

答案 0 :(得分:2)

这个论点onefile=FALSE解决了这个问题!

data(iris)
library(ggplot2)
box <- ggplot(data=iris, aes(x=Species, y=Sepal.Length)) +
  geom_boxplot(aes(fill=Species)) +
  ylab("Sepal Length") + ggtitle("Iris Boxplot") +
  stat_summary(fun.y=mean, geom="point", shape=5, size=4) 
box2 <- ggplot_build(box)
#I do stuff here
pdf.options(reset = TRUE, onefile = FALSE)
pdf(file="test.pdf")
my_plot <- plot(ggplot_gtable(box2))
#ggsave("test1.png", plot = my_plot,dev = 'png')
print(my_plot)
dev.off()

答案 1 :(得分:1)

简单地说:

plot(ggplot_gtable(box2))
ggsave(filename = "my_plot.pdf")