Légende raster en R: comment colorer des valeurs spécifiques?

30

J'ai un modèle d'élévation tracé en R

r <- raster("example.dem")
plot(r, col = topo.colors(20))

Tracé d'élévation

Certaines valeurs sont en dessous du niveau de la mer (0), et j'aimerais les afficher en rouge. Comment puis-je attribuer des plages spécifiques à des couleurs spécifiques dans l'intrigue ()?

Simbamangu
la source

Réponses:

33

Voici un exemple vraiment simple

library(raster)
data(volcano)
volcanoR <- raster(volcano)

#making colors below 100 red and above 180 blue in this example

breakpoints <- c(94,100,120,140,160,180,195)
colors <- c("red","white","white","white","white","blue")
plot(volcanoR,breaks=breakpoints,col=colors)

entrez la description de l'image ici

Il vous suffit de transmettre à l'intrigue un vecteur de points d'arrêt et un vecteur de couleurs correspondant aux points d'arrêt. Consultez le RColorbrewerpackage pour de très belles rampes de couleur intégrées. Consultez également le classIntpackage pour créer les points d'arrêt.

Andy W
la source
Excellent - embarrassant combien de temps j'ai joué avec ça. Existe-t-il un moyen simple d'importer des rampes de couleur à partir du brasseur de couleurs? EDIT: désolé, je vois maintenant que vous faites référence à un package, pas au site!
Simbamangu
3
@Simbamangu, nous avons tous été là. En fait, je trouve que de nombreux exemples de cette opération obscurcissent ce qui est réellement passé en tant que points d'arrêt et couleurs en utilisant des objets créés à partir d'autres packages (comme ceux que je suggère). Je pense qu'il est plus simple de le voir comme ça, puis d'utiliser les autres packages pour créer des points d'arrêt et des rampes de couleurs appropriés sans trop travailler.
Andy W
4
Je suis entièrement d'accord avec cela - les exemples dans de nombreux packages R sont vraiment difficiles à comprendre, avec trop d'exemples d'autres objets!
Simbamangu