Answers:
有两个密切相关的问题,每个问题都有一个答案。
要保存图解,您需要执行以下操作:
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在采购时不执行
dev.print(pdf, 'filename.pdf')
这应该完美地复制图像,同时考虑到您对交互式窗口所做的任何调整大小。您可以像在此答案的第一部分中pdf
那样用其他文件类型替换png
。
getwd()
dev.print
。我认为有两个密切相关的问题需要不同的答案。第二个子问题基本上是“如何将已经绘制的图像保存到屏幕上?”。抱歉,如果我的编辑效果不是很好,请随时改进我的编辑。
m3=garchFit(~arma(3,0)+garch(1,1))
和plot(m3)
。
如果您想继续查看R中的图,则可以使用dev.copy
:
X11 ()
plot (x,y)
dev.copy(jpeg,filename="plot.jpg");
dev.off ();
如果在R中出现太多的绘图窗口,请使用graphics.off()
来关闭所有绘图窗口。
dev.print
更好,因为它可以准确地从屏幕上复制图像。dev.copy
强制每个图像默认为正方形。如果您可以很好地交互设置所有内容,这将令人沮丧
dev.print()
width和height参数来定义尺寸。例如 dev.copy(device = png, filename = 'MyPlot.png', width = 1000, height = 500) dev.off()
如果使用ggplot2
首选的保存方式,则使用ggsave
。创建绘图后,首先必须绘图ggsave
:
ggplot(...)
ggsave("plot.png")
图像的格式取决于您为文件名选择的扩展名。其他参数可以传递到ggsave
,特别是width
,height
和dpi
。
dev
,此解决方案可在没有图形设备的虚拟机上工作。
像这样
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()
可能还有其他人。它们全部都列在帮助页面中。
对于第一个问题,我发现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/,则有一个特殊菜单可将绘图保存为您喜欢的任何格式以及您选择的任何分辨率
如果您在使用开启装置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()
在某些情况下,既要保存又要打印基本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")
请注意,必须使用quote
,否则该plot(x)
调用将在全局环境中运行并NULL
传递给basesave()
。
dev.copy(png,'path/pngFile.png')
plot(YData ~ XData, data = mydata)
dev.off()