2015-08-07 13 views
7

Ho letto the docs per R image() ma non capisco. Perché questa matrice:R image() stampa la matrice ruotata?

> mat1 
    [,1] [,2] [,3] 
[1,] 1 0 1 
[2,] 0 1 0 
[3,] 0 0 0 

Tracciata in questo modo:

> image(c(1:3), c(1:3), mat1) 

resa questa:

enter image description here

E come posso fare il layout lo stesso come la matrice stampata? Non si tratta solo di prendere la trasposizione per capovolgere xey, dato che finisce con un'immagine "capovolta".

+0

Per ruotare una matrice, vedere: [come ruotare una matrice in r] (http://stackoverflow.com/questions/16496210/rotate-a-matrix-in-r). – Jota

risposta

9

È possibile invertire la matrice, quindi trasporre.

mat1 <- apply(mat1, 2, rev) 
image(1:3, 1:3, t(mat1)) 

È confusa perché richiama dalla riga dal basso verso l'alto, ma indici R matrici di colonna, dall'alto verso il basso. Quindi, i pixel nella prima riga, da sinistra a destra, corrispondono alla prima colonna della matrice, dall'alto verso il basso.

+1

Grazie per il suggerimento, ma mi chiedo se si conosce la razionalizzazione per questo disegno di fine/o dove si dice così nei documenti? Ho guardato i documenti, e sono frustrato dal fatto che non riesco a capire come dovrei saperlo prima di disegnare l'immagine? – helloB

+0

@helloB C'è una discussione sul layout nascosto nella sezione Dettagli di '? Image'. A parte questo, penso che le immagini siano comunemente disegnate dal basso verso l'alto (non sono sicuro)? – jenesaisquoi

+0

@helloB come indicato da nongkrong, controlla la sezione Dettagli di "? Image' dove troverai" Nota che l'immagine interpreta la matrice z come una tabella di valori f (x [i], y [j]), in modo che l'asse x corrisponde al numero di riga e l'asse y al numero di colonna, con la colonna 1 in basso, ovvero una rotazione in senso antiorario di 90 gradi del layout stampato convenzionale di una matrice. " – Jota