2012-02-24 9 views
16

Podczas kreślenia tylko legendę (z raster obiektu - colorbar):właściwości Legenda kiedy legend.only = T (pakiet raster)

require(raster) 
r = raster() 
r[] = 1 
plot(r, legend=F) 
plot(r, zlim=c(-10,10), legend.only=T) 

jak mogę kontrolować wielkość etykiety osi legenda, zaznaczyć długość, i inne właściwości legendy? Wiem, że mogę zadzwonić pod numer par(...) przed ostatnim połączeniem plot(), ale czy istnieje czystszy sposób?

Odpowiedz

34

Możesz przekazać axis.args i legend.args jako argumenty do wywołania funkcji "tylko legenda", as for image.plot w pakiecie fields.

Na przykład, aby określić pozycje znaczników i etykiety oraz aby zmniejszyć rozmiar etykiety znacznika, poniższe rozwiązania powinny wystarczyć. Przyjmuje również argumenty takie jak legend.width i legend.shrink.

require(raster) 
data(volcano) 
r <- raster(volcano) 
plot(r, col=topo.colors(100), legend=FALSE, axes=FALSE) 
r.range <- c(minValue(r), maxValue(r)) 
plot(r, legend.only=TRUE, col=topo.colors(100), 
    legend.width=1, legend.shrink=0.75, 
    axis.args=list(at=seq(r.range[1], r.range[2], 25), 
        labels=seq(r.range[1], r.range[2], 25), 
        cex.axis=0.6), 
    legend.args=list(text='Elevation (m)', side=4, font=2, line=2.5, cex=0.8)) 

legend only - arguments

+0

Dzięki, to jest dokładnie to, co było później, ale nie mógł znaleźć. – Benjamin

+0

Dzięki, w końcu !! R jest czasami tak sprzeczny z intuicją ... dlaczego normalne działki nie działają ... – TMS

+0

+1, widzę, że jesteś mistrzem R. :) – zx81

3

Możliwe jest również do pracy z "smallplot argument w przypadku 'legend.only = TRUE'. Małe prace z dolnego/lewego rogu obszaru wykresu smallplot = c (min% od lewej, max% od lewej, min% od dołu, max% od dołu).

# load data & plot 
require(raster); data(volcano); r <- raster(volcano) 
plot(r, col=topo.colors(100), legend=FALSE, axes=FALSE) 
r.range <- c(minValue(r), maxValue(r)) 

plot(r, legend.only=TRUE, col=topo.colors(100), legend.width=1, legend.shrink=0.75, 
    smallplot=c(0,.09, .3,.75)); par(mar = par("mar")) 

plot(r, legend.only=TRUE, col=topo.colors(100), legend.width=1, legend.shrink=0.75, 
    smallplot=c(0.3,0.5, 0.2,0.7)); par(mar = par("mar")) 

plot(r, legend.only=TRUE, col=topo.colors(100), legend.width=1, legend.shrink=0.75, 
    smallplot=c(0.85,0.9, 0.7,0.9)); par(mar = par("mar")) 

plot(r, legend.only=TRUE, col=topo.colors(100), legend.width=1, legend.shrink=0.75, 
    smallplot=c(0.7,0.90, 0.05,0.2)); par(mar = par("mar")) 

enter image description here

+1

Fajnie! Czy istnieje sposób edycji koloru tekstu w legendzie? –

Powiązane problemy