【问题标题】:Multiple Plots with ggplot2: Non-closing files and blank pagesggplot2 的多个绘图:非关闭文件和空白页
【发布时间】:2015-05-27 09:55:16
【问题描述】:

将多个 ggplot2 图存储为 pdf 时,我有一个奇怪的现象。使用 ggsave 存储时,我得到 B_ggplot.pdf 正常,但 A_ggplot.pdf 没有关闭文件(它似乎被锁定)。旧方法有时会生成一个空白页。似乎有比赛条件,但我不能指望它。

谁能帮我理解这个?

代码如下:

library(ggplot2)

# plot A
figureA <- ggplot(data=mtcars, aes(x=cyl, y=hp)) + geom_point()
# plot B
figureB <- ggplot(data=mtcars, aes(x=wt, y=carb)) + geom_point()

# store PDFs using ggplot2
ggsave(file="D:/A_ggplot.pdf") # OK
ggsave(file="D:/B_ggplot.pdf") # PDF with empty page

# store PDFs the old way
pdf(file="D:/A.pdf") # OK
print(figureA)
dev.off()
pdf(file="D:/B.pdf") # hangs and when closing RStudio, writes file
print(figureB)
dev.off()

【问题讨论】:

  • 您是否尝试过运行dev.off() 来关闭所有图形设备,直到出现错误?
  • 这似乎是这样做的,wrt到关闭文件问题。但是,我仍然有 A_ggplot.pdf 的空白 pdf 页面...?
  • 我尝试了您的代码,并通过ggsave(file="D:/A_ggplot.pdf", plot=figureA)ggsave(file="D:/B_ggplot.pdf", plot=figureB) 解决了您的问题。

标签: r pdf plot ggplot2


【解决方案1】:

以下内容对我有用。您需要在每次绘图后致电ggsave。从文档中您会看到ggplot 使用last_plot()。我不在 Windows 上,所以我改变了路径。无论如何:

library(ggplot2)

# plot A
figureA <- ggplot(data=mtcars, aes(x=cyl, y=hp)) + geom_point()
ggsave(file="~/A_ggplot.pdf") 

# plot B
figureB <- ggplot(data=mtcars, aes(x=wt, y=carb)) + geom_point()
ggsave(file="~/B_ggplot.pdf")

否则你需要指定它,例如与:

ggsave(file="~/B_ggplot.pdf", plot = figureB)

旧方法对我来说没有问题:

pdf(file="~/A.pdf") # OK
print(figureA)
dev.off()

pdf(file="~/B.pdf") # OK
print(figureB)
dev.off()

请提供sessionInfo()。请务必更新您的软件包。请务必在新的 R 会话中运行代码。

【讨论】:

  • 是的,做到了。一个我没有考虑到的小细节。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-27
  • 2016-01-02
  • 1970-01-01
  • 1970-01-01
  • 2014-10-22
  • 1970-01-01
相关资源
最近更新 更多