R 获取我正在查看的300px TIFF的绘图以供发布

R 获取我正在查看的300px TIFF的绘图以供发布,r,plot,rstudio,tiff,R,Plot,Rstudio,Tiff,我想为自己解决一个常见的问题。一旦我有了一个通常使用ggplot绘制的绘图,然后我需要在OSX中以高分辨率300或有时600 dpi的TIFF图像输出 我想我可以为此制作一个简单的函数,但它似乎没有按我预期的方式工作 dev.copy2tiff <- function(filename,res=300,compression="lzw",...){ sizes <- dev.size(units="px") cop <-dev.copy(tiff,filename=f

我想为自己解决一个常见的问题。一旦我有了一个通常使用ggplot绘制的绘图,然后我需要在OSX中以高分辨率300或有时600 dpi的TIFF图像输出

我想我可以为此制作一个简单的函数,但它似乎没有按我预期的方式工作

dev.copy2tiff <- function(filename,res=300,compression="lzw",...){
  sizes <- dev.size(units="px")

  cop <-dev.copy(tiff,filename=filename,width=sizes[[1]],height=sizes[[2]],units="px",res=res,compression=compression,pointsize = 3,...)
  dev.flush()
  dev.off()
  return(cop)
}
输出:

情节应该是什么样子的屏幕截图:

为什么TIFF中的输出与屏幕上的不一样,我可以对此做些什么

编辑:

刚刚意识到:设备的大小当然应该指定为宽度和高度,而不是像素。本修订守则:

dev.copy2tiff <- function(filename,res=300,compression="lzw",...){
  sizes <- dev.size(units="cm")

  cop <- dev.copy(tiff,filename=filename,width=(sizes[[1]]),height=(sizes[[2]]),units="cm",res=res,compression=compression,...)
  dev.flush()
  dev.off()
  return(cop)
}
产生一个好看的TIFF图像,看起来像RStudio屏幕上显示的图像,但根据OSX预览,图像的分辨率为72 DPI


为什么不是300 dpi?

解决这个问题的办法似乎是通过EPS文件格式

dev.copy2eps(file="filename.eps")
他现在是我的朋友。在预览OSX中打开后,可以将其导出到TIFF或按原样提交