2013-03-03 5 views
10

Ho una matrice che ho fatto un'immagine dell'uso di image(matrix). C'è via per aggiungere una legenda dei colori alla mia immagine come faccio quando aggiungo una legenda alla trama?Aggiunta di una legenda di colore a un'immagine

+0

Questa domanda è troppo vaga per ricevere una risposta adeguata. Per favore aggiungi linguaggi di programmazione, piattaforme, librerie, ecc. Che stai usando – Jason

+6

@Jason r è un linguaggio di programmazione! –

risposta

6

image in R è una funzione di tracciamento abbastanza semplice. Potresti voler dare un'occhiata a filled.contour se vuoi una funzione che assegni automaticamente lo spazio per una legenda. Oppure provate questo:

library(lattice) 
levelplot(matrix) 
7

o la leggenda potrebbe essere fornita in questo modo:

 legend(grconvertX(0.5, "device"), grconvertY(1, "device"), 
    c("0",".5","1"), fill = colMap[c(1, 10, 20)], xpd = NA) 

dove grconvertX() e grconvertY() e XPD si assicura la leggenda è fuori della regione tramando. Un esempio plausibile potrebbe essere:

nsamples <- 20 
    mat <- rnorm(nsamples, .5, .15) 
    dim(mat) <- c(4, 5) 
    colMap <- colorRampPalette(c("red","white","blue"))(nsamples) 
    image(1:4, 1:5, mat, col = colMap, ylab="", xlab="") 
    legend(grconvertX(0.5, "device"), grconvertY(1, "device"), 
    c("0",".5","1"), fill = colMap[c(1, 10, 20)], xpd = NA) 

P.S .: So che è una vecchia richiesta ed è risolto. Comunque stavo cercando una risposta simile e non riuscivo a trovarlo. Dato che mi sono preoccupato di risolvere questo problema, ho pensato che forse anche qualcun altro potrebbe trarne beneficio.

+1

Molto utile. Per una trama con più figure, ho usato 'par (mfrow = c (1,1), new = TRUE, fig = c (0,1,0,1))' di fronte all'istruzione legend e "nfc" piuttosto di "dispositivo". – jvbraun

2

Dal pacchetto fields, è possibile provare image.plot. Questa funzione è basata sul normale image, ma fornisce una legenda di figura.

library(fields) 
x = 1:10 
y = 1:15 
z = outer(x,y,"+") 
image.plot(x, y, z)