Почему матрица в растр отображается повернутой?

Я пытаюсь преобразовать матрицу (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) предполагаются в порядке возрастания (начиная с левого нижнего угла и продолжая по строкам!).

Другие вопросы по тегам