2011-12-30 17 views
6

Sto cercando un modo per tracciare una matrice di carattere Tipo:trama di una matrice di tipo carattere

m=matrix(data=c("A","A","B","B","B","C","C","B"),nrow=4,ncol=2) 
> m 
    [,1] [,2] 
[1,] "A" "B" 
[2,] "A" "C" 
[3,] "B" "C" 
[4,] "B" "B" 

con un insieme definito di colori

A="Yellow" 
B="Blue" 
C="Green" 

Devo passare da matrice ascii e usa l'immagine () dal pacchetto sp?

Sto cercando fro qualcosa di simile:

enter image description here

+0

'image' è da pkg: grafica. La seconda risposta di seguito dovrebbe soddisfare, almeno quando si scambiano righe e colonne. Puoi cercare il verde desiderato con questo codice: 'grep (" green ", colors(), value = TRUE)'. "darkgreen" era troppo scuro. –

risposta

10

Dipende piuttosto da ciò che si intende per "tracciare una matrice":

m2 <- m 
m2[] <- c("yellow", "blue","green")[match(m, c("A","B","C"))] 
m2 
#------------ 
[,1]  [,2] 
[1,] "yellow" "blue" 
[2,] "yellow" "green" 
[3,] "blue" "green" 
[4,] "blue" "blue" 
#------------ 
plot(row(m2), col(m2), col=m2, pch=18, cex=4) 

Questa traccia diamanti solidi di colore specificato nelle posizioni della matrice determinate dalla riga e dalle colonne della matrice m. Un altro modo con image:

m2[] <- match(m, c("A","B","C")) 
mode(m2) <- "numeric" 
m2 
image(1:nrow(m2), 1:ncol(m2), m2, col=c("yellow", "blue","green")) 

enter image description here

+0

'grid.raster (m2, interpolate = FALSE)' se non si desidera alcun asse ecc. – baptiste

+0

Che ha generato un errore con l'oggetto m2 sopra e quando è diviso per il massimo (m2) ottengo il grigio. –

+0

Intendevo il primo m2 (nomi di colori) – baptiste

Problemi correlati