2013-03-03 5 views
10

Mam matrycę, z której zrobiłem obraz przy użyciu image(matrix). Czy istnieje możliwość dodania legendy kolorów do mojego obrazu, tak jak robię to podczas dodawania legendy do fabuły?Dodawanie legendy kolorów do obrazu

+0

To pytanie jest zbyt ogólnikowe, aby uzyskać właściwą odpowiedź. Dodaj języki programowania, platformy, biblioteki itp., Których używasz. – Jason

+6

@Jason r jest językiem programowania! –

Odpowiedz

6

image w R jest dość podstawową funkcją drukowania. Możesz chcieć spojrzeć na filled.contour, jeśli chcesz funkcję, która automatycznie przydzieli miejsce dla legendy. Lub spróbuj tego:

library(lattice) 
levelplot(matrix) 
7

lub legenda może być udzielone w ten sposób:

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

gdzie grconvertX() i grconvertY() i XPD pilnuje legenda jest poza obszarem kreślenia. wiarygodne Przykładem może być:

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 .: Wiem, że jest stary i żądanie to jest rozwiązane. Jednak szukałem podobnej odpowiedzi i nie mogłem jej znaleźć. Ponieważ zawracam sobie głowę rozwiązywaniem tego problemu, myślałem, że może ktoś inny również z tego skorzysta.

+1

Bardzo pomocny. W przypadku wykresu z wieloma liczbami użyłem 'par (mfrow = c (1,1), new = TRUE, fig = c (0,1,0,1))' przed instrukcją legendy i "nfc" raczej niż "urządzenie". – jvbraun

2

Z pakietu fields można wypróbować image.plot. Ta funkcja jest oparta na zwykłym image, ale zapewnia legendę figur.

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