我用R画了一个简单的线性回归。 我想将该图像保存为PNG或JPEG,是否可以自动进行?(通过代码)

有两个不同的问题:首先,我已经在我的显示器上查看了情节,我想按原样保存它。其次,我还没有生成绘图,但我想在执行绘图代码时直接将其保存到磁盘。


当前回答

如果你使用R Studio http://rstudio.org/,有一个特殊的菜单,可以将你的图保存为你喜欢的任何格式和你选择的任何分辨率

其他回答

如果你使用R Studio http://rstudio.org/,有一个特殊的菜单,可以将你的图保存为你喜欢的任何格式和你选择的任何分辨率

在某些情况下,人们希望既保存又打印底数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()。

dev.copy(png,'path/pngFile.png')
plot(YData ~ XData, data = mydata)
dev.off()

如果你想在R中继续看到图,另一个选择是使用dev.copy:

X11 ()
plot (x,y)

dev.copy(jpeg,filename="plot.jpg");
dev.off ();

如果你在R中遇到太多的绘图窗口,使用graphics.off()关闭所有的绘图窗口。

如果使用ggplot2,首选的保存方式是使用ggsave。首先,你必须创建一个plot,在创建plot后调用ggsave:

ggplot(...)
ggsave("plot.png")

图像的格式由您为文件名选择的扩展名决定。可以将其他参数传递给ggsave,特别是宽度、高度和dpi。