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

时间:2019-02-23 12:14:48

标签: r matrix rotation r-raster

我正在尝试将矩阵(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")))

enter image description here

1 个答案:

答案 0 :(得分:4)

我认为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)

enter image description here

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)而不是z”。这将为您提供x和y从0到1等距的值,并且(z)值假定为升序(从左下角开始并逐行!)。