How to save a plot as image on the disk?
我用R绘制了一个简单的线性回归。我想将该图像保存为png或jpeg,是否可以自动执行?(通过代码)
有两个不同的问题:首先,我已经在看监视器上的情节了,我想把它原封不动地保存下来。其次,我还没有生成绘图,但是我想在执行绘图代码时直接将其保存到磁盘上。
有两个密切相关的问题,每个问题都有一个答案。
1。在将来的脚本中将生成一个图像,如何将其保存到磁盘?要保存绘图,需要执行以下操作:
将绘图保存到
1 2 3 4 5 | fit <- lm(some ~ model) png(filename="your/file/location/name.png") plot(fit) dev.off() |
。
这在图形格式
但是请注意,如果您调整了屏幕窗口的大小,磁盘上的图像看起来可能与直接打印到屏幕上的相同绘图不同。
请注意,如果您的绘图是由
1 | dev.print(pdf, 'filename.pdf') |
这应该完美地复制图像,考虑到您对交互窗口所做的任何调整。与此答案的第一部分一样,您可以用其他文件类型(如
如果您想继续在R中查看绘图,另一种选择是使用
1 2 3 4 5 | X11 () plot (x,y) dev.copy(jpeg,filename="plot.jpg"); dev.off (); |
。
如果R中的绘图窗口太多,请使用
如果使用
1 2 | ggplot(...) ggsave("plot.png") |
。
图像的格式由您为文件名选择的扩展名决定。附加参数可以传递给
这样地
1 2 3 | png('filename.png') # make plot dev.off() |
或者这个
1 2 3 4 | # sometimes plots do better in vector graphics svg('filename.svg') # make plot dev.off() |
号
或者这个
1 2 3 | pdf('filename.pdf') # make plot dev.off() |
可能还有其他人。它们都列在帮助页面中。
对于第一个问题,我发现
1 | dev.print(pdf, file="filename.pdf"); |
您可以用其他格式(如
这将复制您在屏幕上看到的图像。
对于第二个问题(正如其他人已经回答的那样),在执行绘图命令之前,必须将输出定向到磁盘
1 2 3 4 | 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/有一个特殊的菜单,可以将您的绘图保存为您喜欢的任何格式和您选择的任何分辨率。
1 2 3 4 5 6 7 | plotpath<- file.path(path,"PLOT_name",paste("plot_",file,".png",sep="")) png(filename=plotpath) plot(x,y, main= file) dev.off() |
。
如果按照andrie(最佳答案)的建议,使用
但是,如果要查看绘图并保存它们,请在绘制绘图并激活包含这些绘图的窗口后调用
1 2 3 | dev.copy(png,'path/pngFile.png') plot(YData ~ XData, data = mydata) dev.off() |
号
在某些情况下,您希望同时保存和打印基R图。我花了一点时间,想出了这个实用功能:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | 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") |
号
注意必须使用
要添加到这些答案中,如果您有一个r脚本,其中包含生成屏幕绘图的调用(本机设备),那么可以通过将脚本从终端重定向到r(假设您运行的是Linux或OS X),将这些脚本全部保存到pdf文件(非交互shell的默认设备)"r plots.pdf"(默认名称),例如:
1 | R < myscript.R --no-save |
必要时可转换成JPG/PNG格式。