r-gridExtra::read.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的问题?

经过更多的谷歌搜索,观察到的行为似乎是pixmap包中的一个错误(例如,另一个实例请参见此处)。切换到tiff::readTIFF可以修复问题-正确报告解决方案。rtiff::readTiff概括了gridExtra::read.tiff的上述行为,因此也不可用。

相关内容

  • 没有找到相关文章

最新更新