2012-02-24 6 views
16

Al trazar solamente la leyenda (de un objeto raster - una barra de colores):Propiedades de la leyenda cuando legend.only = T (paquete de trama)

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

cómo puedo controlar el tamaño de la etiqueta leyenda de un eje, tick longitud, y otras propiedades de leyenda? Sé que puedo llamar al par(...) antes de la última llamada plot(), pero ¿hay una manera más limpia?

Respuesta

34

Puede pasar axis.args y legend.args como argumentos a la leyenda única llamada de función, as for image.plot en el paquete fields.

Por ejemplo, para especificar posiciones y etiquetas, y para reducir el tamaño de la etiqueta, lo siguiente debería ser el truco. También aceptará argumentos como legend.width y 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

Gracias, eso es exactamente lo que buscaba, pero no pude encontrar. – Benjamin

+0

¡Gracias, finalmente! R a veces es tan contra-intuitivo ... por qué los pargramas normales de trama no funcionan ... – TMS

+0

+1, veo que eres bastante el maestro R. :) – zx81

3

También es posible trabajar con el argumento 'smallplot' cuando 'legend.only = TRUE'. Pequeños trabajos desde la esquina inferior/izquierda del área de trazado smallplot = c (min% desde la izquierda, max% desde la izquierda, min% desde abajo, max% desde abajo).

# 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

¡Genial! ¿Hay alguna manera de editar el color del texto en la leyenda? –

Cuestiones relacionadas