Raster spplot legend: comment ajouter un titre à côté

8

Après avoir étudié pendant un certain temps comment créer un graphique à partir d'un objet raster, j'ai obtenu presque tout ce dont j'avais besoin, sauf pour ajouter un titre à la légende de spplot.

Ce que j'ai essayé:

  1. à utiliser mtext("XXX (m)", side=4),
  2. pour ajouter un sp.textextérieur à la grille,
  3. à utiliser legend.args = list(title="XXX (m)").

L'image ci-dessous, la fonctionnalité que j'ai ajoutée manuellement à mon tracé, et dans laquelle j'aimerais inclure l'utilisation de R.

entrez la description de l'image ici

Voici un exemple de ce que j'ai obtenu jusqu'à présent:

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)  

Merci de votre aide.

Andre Silva
la source

Réponses:

10

Vous ne pouvez pas l'utiliser mtextici, car il spplotest basé sur le package treillis . mtextne peut être utilisé qu'avec des graphiques 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

Le latticepackage utilise le gridmoteur graphique, qui est un système graphique de bas niveau pour R. Les deux packages font partie de la distribution R de base.

Pour ajouter une étiquette de texte à une position arbitraire, vous pouvez utiliser la fonction grid.text, par exemple

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