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

时间:2010-09-08 13:16:59

标签: image r plot

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

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

3 个答案:

答案 0 :(得分:4)

如何使用基本图形函数排列多个图表有两种方法,即par(mfrow=c(rows,columns))(用整数替换rowscolumns)和layout(mat)其中mat }是一个像matrix(c(1,2,3,4))这样的矩阵 有关详细信息,请参阅?par?layout,尤其是Quick-R: Combining Plots

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

答案 1 :(得分:3)

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

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指定的标题。如果你想要有更多的灵活性,你应该看一下格子图。

答案 2 :(得分:1)

如果您不希望图像位于常规网格中(不同的大小可能意味着这一点),那么您可以考虑使用TeachingDemos包中的子图功能。帮助页面中的最后一个示例显示使用图像作为绘图字符,只需修改即可使用不同的图像和大小/位置。

与my.symbols一起使用的ms.image函数(相同的包)是另一种可能性。