2011-12-30 22 views
6

Busco una manera de trazar una matriz de tipo carácter:parcela de una matriz de tipo carácter

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 conjunto definido de colores

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

¿Debo pasar de la matriz para ascii y utilizar imagen() desde sp paquete?

Busco lado a otro algo como esto:

enter image description here

+0

'image' es de PKG: gráficos. La segunda respuesta a continuación debería cumplir, al menos cuando intercambias filas y columnas. Puede buscar el verde deseado con este código: 'grep (" green ", colors(), value = TRUE)'. "verde oscuro" estaba demasiado oscuro. –

Respuesta

10

Más bien depende de lo que entiende por "trazar una matriz":

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) 

Esto dibuja diamantes sólidos del color especificado en las ubicaciones de la matriz determinadas por la fila y las columnas de la matriz m. Otra forma de 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)' si no quiere ningún eje, etc. – baptiste

+0

Eso arrojó un error con el objeto m2 anterior y cuando se divide por max (m2) obtengo escala de grises. –

+0

Quise decir los primeros m2 (nombres de colores) – baptiste

Cuestiones relacionadas