为了组装多面板图,我正在编写一个使用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的问题?
答案 0 :(得分:0)
在进行了更多Google搜索后,似乎观察到的行为是pixmap
包中的错误(例如,请参阅另一个实例的here)。切换到tiff::readTIFF
可解决问题 - 正确报告解决方案。 rtiff::readTiff
概括了gridExtra::read.tiff
的上述行为,因此也无法使用。