Leyenda de trama de trama: cómo agregar un título al lado

8

Después de estudiar durante un tiempo cómo crear un gráfico a partir de un objeto ráster, obtuve casi todo lo que necesitaba, excepto agregar un título a la leyenda de spplot.

Lo que probé:

  1. para usar mtext("XXX (m)", side=4),
  2. para agregar un sp.textfuera de la cuadrícula,
  3. a utilizar legend.args = list(title="XXX (m)").

El punto de la imagen a continuación, la función que agregué manualmente a mi trama, y ​​en la que me gustaría incluir el uso de R.

ingrese la descripción de la imagen aquí

Aquí hay un ejemplo de lo que obtuve hasta ahora:

require(raster)
require(sp)
require(lattice)

north <- list("SpatialPolygonsRescale", layout.north.arrow(type=1), offset = c(0.95,0.85), scale=0.1)
scale <- list("SpatialPolygonsRescale", layout.scale.bar(),
      offset = c(0.55, 0.03), scale = 0.4, fill = c("transparent","black"))
txt1 <- list("sp.text", c(0.55, 0.08), "0")
txt2 <- list("sp.text", c(0.75, 0.08), "0.2")
txt3 <- list("sp.text", c(0.95, 0.08), "0.4")
raster_layout <- list(north,scale,txt1,txt2,txt3)
cuts <- c(110,120,130,140,150,160,170,180,190,200)
spplot(raster(volcano), scales = list(draw=T), at=cuts, col.regions = palette(gray(seq(0,0.9,len=9))), sp.layout= raster_layout, add=T)  

Gracias por tu ayuda.

Andre Silva
fuente

Respuestas:

10

No se puede usar mtextaquí, porque spplotse basa en el paquete de red . mtextsolo se puede usar con gráficos base.

R> p <- spplot(raster(volcano), scales = list(draw=T), at=cuts,
+              col.regions = palette(gray(seq(0,0.9,len=9))),
+              sp.layout= raster_layout, add=T)
R> class(p)
[1] "trellis"  # -> lattice package

El latticepaquete hace uso del gridmotor de gráficos, que es un sistema de gráficos de bajo nivel para R. Ambos paquetes son parte de la distribución base R.

Para agregar una etiqueta de texto en una posición arbitraria, puede usar la función grid.text, por ej.

library("grid")
grid.text("XXX (m)", x=unit(0.95, "npc"), y=unit(0.50, "npc"), rot=-90)
rcs
fuente