我正在尝试将矩阵(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")))
答案 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)
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)值假定为升序(从左下角开始并逐行!)。