Почему матрица в растр отображается повернутой?
Я пытаюсь преобразовать матрицу (myMat
) к растровым данным (myRas
); однако я не уверен, почему это вращается внезапно. Это можно легко исправить поворотом на 90 градусов, используя t()
но я буду благодарен, если кто-то объяснит, почему это нежелательное вращение происходит постоянно?! а есть ли способ это предотвратить?
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")))
1 ответ
Я бы сказал, что 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 для удобства". Это даст вам одинаково расположенные значения от 0 до 1 для x и y, а значения (z) предполагаются в порядке возрастания (начиная с левого нижнего угла и продолжая по строкам!).