我用R画了一个简单的线性回归。 我想将该图像保存为PNG或JPEG,是否可以自动进行?(通过代码)
有两个不同的问题:首先,我已经在我的显示器上查看了情节,我想按原样保存它。其次,我还没有生成绘图,但我想在执行绘图代码时直接将其保存到磁盘。
我用R画了一个简单的线性回归。 我想将该图像保存为PNG或JPEG,是否可以自动进行?(通过代码)
有两个不同的问题:首先,我已经在我的显示器上查看了情节,我想按原样保存它。其次,我还没有生成绘图,但我想在执行绘图代码时直接将其保存到磁盘。
当前回答
为了补充这些答案,如果您有一个R脚本,其中包含为屏幕(本机设备)生成图形的调用,那么这些都可以保存到pdf文件(非交互式shell的默认设备)中。“Rplots.pdf”(默认名称)通过将脚本从终端重定向到R(假设您运行的是linux或OS X),例如:
R < myscript.R --no-save
这可以根据需要转换为jpg/png
其他回答
在某些情况下,人们希望既保存又打印底数r图。我花了一点时间想出了这个效用函数
x = 1:10
basesave = function(expr, filename, print=T) {
#extension
exten = stringr::str_match(filename, "\\.(\\w+)$")[, 2]
switch(exten,
png = {
png(filename)
eval(expr, envir = parent.frame())
dev.off()
},
{stop("filetype not recognized")})
#print?
if (print) eval(expr, envir = parent.frame())
invisible(NULL)
}
#plots, but doesn't save
plot(x)
#saves, but doesn't plot
png("test.png")
plot(x)
dev.off()
#both
basesave(quote(plot(x)), "test.png")
#works with pipe too
quote(plot(x)) %>% basesave("test.png")
注意,必须使用引号,否则plot(x)调用将在全局环境中运行,并将NULL传递给basesave()。
像这样
png('filename.png')
# make plot
dev.off()
或者这个
# sometimes plots do better in vector graphics
svg('filename.svg')
# make plot
dev.off()
或者这个
pdf('filename.pdf')
# make plot
dev.off()
可能其他人也一样。它们都列在帮助页中。
如果你打开一个设备使用png(), bmp(), pdf()等由Andrie(最好的答案)的建议,窗口与绘图不会弹出打开,只是*.png, *bmp或*.pdf文件将被创建。这在大量计算中很方便,因为R只能处理有限数量的图形窗口。
然而,如果你想要看到这些图形并保存它们,在绘制图形并且包含它们的窗口处于活动状态后调用savePlot(filename, type)。
plotpath<- file.path(path, "PLOT_name",paste("plot_",file,".png",sep=""))
png(filename=plotpath)
plot(x,y, main= file)
dev.off()
有两个密切相关的问题,每个问题都有答案。
1. 一个图像将在未来生成在我的脚本,我如何将它保存到磁盘?
要保存一个plot,你需要做以下操作:
打开一个设备,使用png(), bmp(), pdf()或类似的方法 绘制模型图 使用dev.off()关闭设备
将绘图保存为png文件的示例代码:
fit <- lm(some ~ model)
png(filename="your/file/location/name.png")
plot(fit)
dev.off()
这在图形格式?png、?bmp、?jpeg和?tiff的(组合)帮助页面以及?pdf的单独帮助页面中都有描述。
但是请注意,如果您调整了屏幕上窗口的大小,那么在磁盘上的图像可能与直接绘制到屏幕上的相同图形看起来不同。
请注意,如果您的图形是由lattice或ggplot2制作的,则必须显式地打印该图形。请看下面的回答,它更详细地解释了这一点,还链接到R常见问题:ggplot的qplot在采购时不执行
2. 我目前在我的屏幕上看一个情节,我想复制它“原样”到磁盘。
dev.print(pdf, 'filename.pdf')
这应该完美地复制图像,尊重你对交互窗口所做的任何调整。你可以,就像这个答案的第一部分,用其他文件类型替换pdf,比如png。