我正在尝试使用图形设备在函数中保存ggplot.但我发现代码生成空图.下面是一个非常简单的例子.
library(ggplot2)
ff <- function(){
jpeg("a.jpg")
qplot(1:20, 1:20)
dev.off()
}
ff()
Run Code Online (Sandbox Code Playgroud)
如果我只运行函数的内容,一切都很好.我知道使用ggsave()会做我想要的事情,但我只是想知道为什么jpeg()加上dev.off()不起作用.我尝试使用不同版本的R,问题仍然存在.
And*_*rie 44
您应该使用ggsave而不是jpeg(); print(p); dev.off()序列. ggsave是一个包装器,它完全按照您的功能执行,除了它提供更多选项和多功能性.您可以明确指定输出类型,例如jpg或pdf,或者它将从您的文件扩展名中猜出.
所以你的代码可能变成:
p <- qplot(1:20, 1:20)
ggsave(filename="a.jpg", plot=p)
Run Code Online (Sandbox Code Playgroud)
有关?ggsave详细信息,请参阅
您的代码中的原始行为不起作用的原因确实是一个常见问题(在stackoverlflow以及CRAN上的R FAQ).您需要插入一个print语句来打印图.在交互式控制台中,打印在后台静默执行.
jor*_*ran 16
必须打印这些图:
ff <- function(){
jpeg("a.jpg")
p <- qplot(1:20, 1:20)
print(p)
dev.off()
}
ff()
Run Code Online (Sandbox Code Playgroud)
这是一个非常常见的错误.