为了组装多面板图形,我正在编写一个函数,该函数使用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
的上述行为,因此也不可用。