gridExtra :: read.tiff和缺少解析信息

时间:2015-02-16 14:23:35

标签: r graphics ggplot2 tiff

为了组装多面板图,我正在编写一个使用gtable来很好地自动排列它们的函数。我正在实现将*.tif图形添加为面板的功能,并且在读取文件后遇到了确定分辨率的问题。

# Plot something
require(ggplot2)
p <- ggplot(mtcars, aes(wt, mpg))
p <- p + geom_point()

# Save as tif
tmpFile <- tempfile(fileext = ".tiff")
ggsave(
  filename = tmpFile,
  plot = p, 
  width = 65, 
  height = 60, 
  units = "mm", 
  dpi = 300)

# Re-read
require(gridExtra)
require(pixmap)
parsedTif <- read.tiff(tmpFile)

发出了一个警告,这是相关的,但我不能放置:

Warning message:
In rep(cellres, length = 2) : 'x' is NULL so the result will be NULL

当我执行此操作时,parsedTif@size会以像素为单位给出维度,但parsedTif@cellres等同于c(1, 1)。在这个构造的案例中,我知道图像应该具有的实际测量值,因此可以像这样重建分辨率,

dim <- parsedTif@size
size <- unit(x = dim/11.8, units = "mm")

但这一点并不为人所知。如何从gridExtra::read.tiff已解析的对象中获取解决方案,或者这只是ggsave生成的tiff的问题?

1 个答案:

答案 0 :(得分:0)

在进行了更多Google搜索后,似乎观察到的行为是pixmap包中的错误(例如,请参阅另一个实例的here)。切换到tiff::readTIFF可解决问题 - 正确报告解决方案。 rtiff::readTiff概括了gridExtra::read.tiff的上述行为,因此也无法使用。