我用R画了一个简单的线性回归。 我想将该图像保存为PNG或JPEG,是否可以自动进行?(通过代码)
有两个不同的问题:首先,我已经在我的显示器上查看了情节,我想按原样保存它。其次,我还没有生成绘图,但我想在执行绘图代码时直接将其保存到磁盘。
我用R画了一个简单的线性回归。 我想将该图像保存为PNG或JPEG,是否可以自动进行?(通过代码)
有两个不同的问题:首先,我已经在我的显示器上查看了情节,我想按原样保存它。其次,我还没有生成绘图,但我想在执行绘图代码时直接将其保存到磁盘。
当前回答
在某些情况下,人们希望既保存又打印底数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()。
其他回答
plotpath<- file.path(path, "PLOT_name",paste("plot_",file,".png",sep=""))
png(filename=plotpath)
plot(x,y, main= file)
dev.off()
如果你想在R中继续看到图,另一个选择是使用dev.copy:
X11 ()
plot (x,y)
dev.copy(jpeg,filename="plot.jpg");
dev.off ();
如果你在R中遇到太多的绘图窗口,使用graphics.off()关闭所有的绘图窗口。
dev.copy(png,'path/pngFile.png')
plot(YData ~ XData, data = mydata)
dev.off()
对于第一个问题,我发现dev.print在交互工作时是最好的。首先,您可以直观地设置您的绘图,当您对所看到的内容感到满意时,您可以要求R将当前的绘图保存到磁盘
dev.print(pdf, file="filename.pdf");
你可以用其他格式替换pdf,比如png。
这将复制你在屏幕上看到的图像。使用dev.copy的问题是图像通常是不同的,并且不记得窗口大小和纵横比-它强制在默认情况下将图形设置为正方形。
对于第二个问题(正如其他人已经回答的那样),必须在执行绘图命令之前将输出定向到磁盘
pdf('filename.pdf')
plot( yourdata )
points (some_more_data)
dev.off() # to complete the writing process and return output to your monitor
如果你使用R Studio http://rstudio.org/,有一个特殊的菜单,可以将你的图保存为你喜欢的任何格式和你选择的任何分辨率