我正在尝试使用图形设备在函数中保存 ggplot。但我发现代码生成空图。下面是一个非常非常简单的例子。
library(ggplot2)
ff <- function(){
jpeg("a.jpg")
qplot(1:20, 1:20)
dev.off()
}
ff()
如果我只运行函数的内容,一切都很好。我知道使用 ggsave() 会做我想要的事情,但我只是想知道为什么 jpeg() 加 dev.off() 不起作用。我用不同版本的 R 尝试过此操作,但问题仍然存在。
你应该使用ggsave
而不是jpeg(); print(p); dev.off()
顺序。ggsave
是一个包装器,它完全按照您想要对您的函数执行的操作,只是它提供了更多选项和多功能性。您可以明确指定输出的类型,例如jpg 或 pdf,否则它会根据您的文件扩展名进行猜测。
所以你的代码可能会变成这样:
p <- qplot(1:20, 1:20)
ggsave(filename="a.jpg", plot=p)
See ?ggsave
更多细节
代码中的原始行为不起作用的原因确实是一个常见问题(关于堆栈溢出 https://stackoverflow.com/questions/6675066/ggplots-qplot-does-not-execute-on-sourcing/6675610#6675610以及CRAN 上的 R 常见问题解答 http://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-do-lattice_002ftrellis-graphics-not-work_003f)。您需要插入一个print
打印情节的语句。在交互式控制台中,打印在后台静默执行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)