7

在 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() 命令有关,但我不知道为什么或如何。还有其他方法可以实现这种布局吗?另一个基于光栅的命令?有没有办法重置光栅图之间的布局?

提前致谢。

4

1 回答 1

5

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

于 2012-08-27T02:56:20.367 回答