为什么矩阵到栅格显示旋转?
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) 值按升序排列(从左下角开始逐行!)。
我正在尝试将矩阵 (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) 值按升序排列(从左下角开始逐行!)。