为什么矩阵到栅格显示旋转?

Why matrix to raster shows up rotated?

我正在尝试将矩阵 (myMat) 转换为栅格数据 (myRas);但是,我不确定为什么 这会突然旋转。这可以通过使用 t() 进行 90 度旋转来轻松解决,但是,如果有人解释为什么这种不需要的旋转一直发生,我将不胜感激?!如果有办法阻止它?

set.seed(23022019)
library(raster)
library(RColorBrewer)

#myMat
myMat<-matrix(runif(3*3), ncol=3) 
image((myMat), col=rev(brewer.pal(9,"RdYlBu")))

#myRas
myRas <- raster(myMat)
image((myRas), col=rev(brewer.pal(9,"RdYlBu")))

我认为 myRas 没有旋转; image(myMat) 被旋转。见下文。

library(raster) 
myMat<-matrix(1:9, ncol=3, byrow=TRUE)
myRas <- raster(myMat)

par(mfrow=c(1,2))
image(myMat, col=terrain.colors(9), main="image(myMat)")
plot(myRas,  col=terrain.colors(9), main="plot(raster(myMat))")
text(myRas)

myMat
#     [,1] [,2] [,3]
#[1,]    1    2    3
#[2,]    4    5    6
#[3,]    7    8    9

发生的事情是 image(myMat) 按行读取值,并按列填充值,从下到上。你可能希望那样,但这是轮换。相反,raster(myMat) 使值保持相同的顺序。

来自graphics::image的帮助解释了为什么它显示这样的值;即使可能很难遵循。如果您提供的矩阵有值,但没有 x 和 y 坐标,则第一个参数 (x) 是 "used instead of z for convenience"。这将为您提供从 0 到 1 的 x 和 y 等距值,并且假定 (z) 值按升序排列(从左下角开始逐行!)。