我需要在单个组合显示(或画布?)中绘制并显示几个jpeg图像。例如,假设我有图像{a,b,c,d} .jpg,每个图像都有不同的大小,我想将它们绘制在2x2网格的一页上。能够为每个子区域设置标题也是很好的。在单个显示器中绘制几个jpeg图像
我一直在彻底寻找解决方案,但无法找到如何去做,所以任何想法都会有帮助。我最好使用基于EBImage包的解决方案。
我需要在单个组合显示(或画布?)中绘制并显示几个jpeg图像。例如,假设我有图像{a,b,c,d} .jpg,每个图像都有不同的大小,我想将它们绘制在2x2网格的一页上。能够为每个子区域设置标题也是很好的。在单个显示器中绘制几个jpeg图像
我一直在彻底寻找解决方案,但无法找到如何去做,所以任何想法都会有帮助。我最好使用基于EBImage包的解决方案。
有两种方法如何安排几个曲线与基本图功能,即par(mfrow=c(rows,columns))
(替代rows
和columns
与整数)和layout(mat)
其中mat
就像matrix(c(1,2,3,4))
的矩阵。
欲了解更多信息,请参阅?par
,?layout
,特别是Quick-R: Combining Plots。
但是,因为你的问题是关于图像,我不知道它是否对你有所帮助。如果没有,我很抱歉误解你的问题。
为了增加Henriks解决方案,使用了标准杆()函数的一个相当方便的方法:
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
指定的标题。如果你想有更多的灵活性,你应该看看格子图。
如果你不想在一个规则的网格中的图像(不同的大小可能暗示这一点),那么你可以考虑使用TeachingDemos包中的子图功能。帮助页面中的最后一个示例显示使用图像作为绘图角色,只需修改以使用不同的图像和大小/位置即可。
与my.symbols一起使用的ms.image函数(相同的包)是另一种可能性。
感谢您的答案。真正的问题是处理图像数据,使用rimage包,我从EBImage包中获取图像数据以更好地显示。在用mfrow()参数组织地块时,我仍然获得了非常大的利润,尽管我已经使用了oma和mar参数。 – user442446 2010-09-13 07:52:53