Leyenda de ráster en R: ¿cómo colorear valores específicos?

30

Tengo un modelo de elevación trazado en R

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

Parcela de elevación

Algunos de los valores están por debajo del nivel del mar (0), y me gustaría que se muestren en rojo. ¿Cómo puedo asignar rangos específicos a colores específicos en el diagrama ()?

Simbamangu
fuente

Respuestas:

33

Aquí hay un ejemplo realmente 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)

ingrese la descripción de la imagen aquí

Solo necesita pasar el diagrama un vector de puntos de ruptura y un vector de colores para que coincida con los puntos de ruptura. Echa un vistazo al RColorbrewerpaquete para ver algunas rampas de color muy bonitas. Consulte también el classIntpaquete para establecer los puntos de interrupción.

Andy W
fuente
Excelente, vergonzoso cuánto tiempo jugué con esto. ¿Existe una manera directa de importar rampas de color desde el fabricante de color? EDITAR: lo siento, ¡ahora veo que te refieres a un paquete, no al sitio!
Simbamangu
3
@Simbamangu, todos hemos estado allí. De hecho, encuentro muchos de los ejemplos de hacer esto ofuscar lo que realmente se pasa como puntos de interrupción y colores mediante el uso de objetos creados a partir de otros paquetes (como los que sugiero). Creo que es más simple verlo así, y luego usar los otros paquetes para crear puntos de interrupción apropiados y rampas de color sin hacer tanto trabajo.
Andy W
44
Estoy completamente de acuerdo con eso: ¡los ejemplos en muchos de los paquetes R son realmente difíciles de entender, ya que se llevan demasiado de otros objetos!
Simbamangu