我需要在单个组合显示(或画布?)中绘制和显示多个jpeg图像。例如,假设我有不同大小的图像{a,b,c,d} .jpg,并且我想将它们绘制在一个2x2网格上的一页纸上。最好还能为每个子图设置标题。
我已经彻底寻找了解决方案,但无法找到如何实现的方法,所以任何建议都会真正有帮助。我最好使用基于EBImage包的解决方案。
我已经彻底寻找了解决方案,但无法找到如何实现的方法,所以任何建议都会真正有帮助。我最好使用基于EBImage包的解决方案。
par(mfrow=c(rows,columns))
(将rows
和columns
替换为整数)和layout(mat)
,其中mat
是像matrix(c(1,2,3,4))
这样的矩阵。?par
、?layout
,特别是Quick-R: Combining Plots。jpeg(filename="somefile.jpg")
op <- par(mfrow=c(2,2)
#plot the plots you want
par(op)
dev.off()
这种方式可以在运行代码后将参数恢复到旧状态。请注意,如果其中一个图形出现错误,则不适用此方法。
请注意,R始终以相同的顺序放置图形。使用mfrow按行填充网格。如果您在代码中使用mfcol而不是mfrow,则按列填充。
布局是完全不同的故事。在这里,您可以定义图形的放置顺序。因此,layout(matrix(1:4,nrow=2)
与par(mfcol=c(2,2))
相同。但是layout(matrix(c(1,4,3,2),ncol=2))
将第一个图形放在左上角,下一个图形放在右下角,第三个图形放在右上角,最后一个图形放在左下角。
每个图形都是完全独立的,因此您使用选项main
指定的标题也会被打印出来。如果您想要更多的灵活性,应该看看lattice图形。
image
函数不兼容,因为它会覆盖整个图形。 - Quantum7image()
,在我的情况下它完美地工作。 - Joris Meys如果您不想要一个常规网格中的图像(不同的大小可能会暗示这一点),那么您可以考虑使用TeachingDemos包中的subplot函数。帮助页面中的最后一个示例显示了如何将图像用作绘图字符,只需修改以使用不同的图像和大小/位置。
my.symbols使用的ms.image函数(同一包)是另一个可能性。