【问题标题】:R - plotting multiple rasters using matrix layoutR - 使用矩阵布局绘制多个栅格
【发布时间】:2012-08-21 11:00:08
【问题描述】:

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

提前致谢。

【问题讨论】:

  • plot 函数实际上是多种函数,它们将根据第一个参数的类进行调度。您需要查看传递给它的对象类的特定函数。 (可能是plot.raster

标签: r layout matrix plot raster


【解决方案1】:

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

【讨论】:

  • 太棒了!奇迹般有效。谢谢 dcarlson!
  • 当你使用图像而不是光栅图时如何找回图例
猜你喜欢
  • 2016-10-20
  • 2018-01-09
  • 2020-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-15
  • 1970-01-01
相关资源
最近更新 更多