在单个显示器中绘制几个jpeg图像

use*_*446 7 plot r image

我需要在单个组合显示(或画布?)中绘制和显示几个jpeg图像.例如,假设我有不同大小的图像{a,b,c,d} .jpg,我想在2x2网格中将它们绘制在一个页面上.能够为每个子图设置标题也是很好的.

我一直在寻找一个解决方案,但无法找到如何做到这一点,所以任何想法都会有所帮助.我最好使用基于EBImage包的解决方案.

Hen*_*rik 5

有两种方法可以使用基本图形函数来排列多个图,即par(mfrow=c(rows,columns))(替换rowscolumns整数)以及layout(mat)其中mat的矩阵如matrix(c(1,2,3,4))
有关更多信息,请参阅?par?layout,尤其是Quick-R:组合图

但是,由于您的问题是关于图像的,我不知道它是否对您有帮助。如果没有,我很抱歉误解了您的问题。


Jor*_*eys 5

要添加到 Henriks 解决方案中,使用 par() 函数的一种相当方便的方法是:

jpeg(filename="somefile.jpg")
op <- par(mfrow=c(2,2)
#plot the plots you want
par(op)
dev.off()
Run Code Online (Sandbox Code Playgroud)

这样,您可以在运行代码后将参数恢复到旧状态。请注意,如果其中一个图出现错误,则事实并非如此。

请注意,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也会被打印。如果您想要更大的灵活性,您应该看看格子图。