获取我正在查看的情节作为 300px TIFF 以供发布

Get the plot I am looking at as a 300px TIFF for publication

我正在尝试为我解决一个常见问题。一旦我有了一个图(通常使用 ggplot 制作),那么我需要输出高分辨率(300 或有时 600 dpi)TIFF 图像(在 OSX 中)。

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

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 中),但分辨率为 72 DPI(根据 OS X 预览)。

怎么不是300dpi?

这个问题的解决方案似乎是通过 EPS 文件格式。

dev.copy2eps(file="filename.eps")

现在是我的朋友了。在预览 (OSX) 中打开后,它可以导出为 TIFF(或按原样提交)。