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
Odpowiedz
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)
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.
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
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)
To pytanie jest zbyt ogólnikowe, aby uzyskać właściwą odpowiedź. Dodaj języki programowania, platformy, biblioteki itp., Których używasz. – Jason
@Jason r jest językiem programowania! –