Legenda raster spplot: como adicionar um título ao lado

8

Depois de estudar por um tempo como criar um gráfico a partir de um objeto raster, obtive quase tudo o que precisava, exceto para adicionar um título à legenda do spplot.

O que eu tentei:

  1. usar mtext("XXX (m)", side=4),
  2. para adicionar um sp.textfora da grade,
  3. usar legend.args = list(title="XXX (m)").

A imagem abaixo identifica o recurso que eu adicionei manualmente ao meu gráfico e no qual gostaria de incluir o uso de R.

insira a descrição da imagem aqui

Aqui está um exemplo do que recebi até agora:

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)  

Obrigado pela ajuda.

Andre Silva
fonte

Respostas:

10

Você não pode usar mtextaqui, porque spploté baseado no pacote de treliça . mtextsó pode ser usado com gráficos de 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

O latticepacote utiliza o gridmecanismo gráfico, que é um sistema gráfico de baixo nível para R. Ambos os pacotes fazem parte da distribuição R. de base.

Para adicionar um rótulo de texto em uma posição arbitrária, você pode usar a função grid.text, por exemplo

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