R - 使用矩阵布局绘制多个栅格

时间:2012-08-26 20:50:23

标签: r layout matrix plot raster

在R(Win64)中,我尝试使用layout()命令在一个绘图窗口中绘制光栅图像和直方图的组合,并使用定义布局的矩阵。以下是一些简化数据的示例代码:

library(raster)

r <- raster(ncols=5, nrows=5, xmn=1, xmx=5, ymn=1, ymx=5)
rast1 <- rasterize(expand.grid(1:5,1:5), r, rnorm(25))
rast2 <- rasterize(expand.grid(1:5,1:5), r, rnorm(25))
rast3 <- rasterize(expand.grid(1:5,1:5), r, rnorm(25))

layout(matrix(c(1,2,3,4,1,2,3,5,1,2,3,6), 3, 4, byrow=T))
layout.show(6)

plot(rast1, axes=F, ann=F, legend=F, box=F, useRaster=T)
plot(rast2, axes=F, ann=F, legend=F, box=F, useRaster=T)
plot(rast3, axes=F, ann=F, legend=F, box=F, useRaster=T)
hist(rnorm(100), ann=F, axes=F)
hist(rnorm(100), ann=F, axes=F)
hist(rnorm(100), ann=F, axes=F)

如您所见,我正在尝试绘制三个光栅图像(rast1,rast2,rast3),每个图像跨越1列,每行3行,旁边有3个直方图,每个直方图跨越1列和1行。 layout.show()命令给出了这个想法。

当我运行此代码时,似乎第一个绘图(栅格)命令也会重置绘图窗口的布局,导致所有后续绘图在标准3x4网格中绘制(第5个绘图现在与第一个绘图重叠)。布局设置似乎很合理,因为我可以在适当的布局中绘制六个直方图。但是光栅图弄得很糟糕。

我怀疑{raster}中的plot()命令有些东西正在弄乱layout()命令,但我不知道为什么或如何。有没有其他方法来实现这种布局?另一个基于栅格的命令?有没有办法在栅格图之间重置布局?

提前致谢。

1 个答案:

答案 0 :(得分:5)

这里可能存在S4方法和layout()之间的问题。作为一种解决方法,它似乎可以用plot()替换plot()。而不是绘图(rast1,axes = F,ann = F,legend = F,box = F,useRaster = T),使用图像(rast1,axes = F,ann = F,asp = 1)来获得方形图像映射。