Come assegnare i colori a valori raster specifici usando R


9

Sto usando la levelplotfunzione del fantastico rasterVispacchetto per creare una mappa i cui valori divergono intorno allo zero. Sto disegnando un file raster usando una tavolozza da rossa a blu, ma sto cercando di assegnare valori da grigio a zero nella mappa.

In particolare, voglio riprodurre i colori di questa figura:

inserisci qui la descrizione dell'immagine

Si noti che quando viene utilizzata una scala da rosso a blu, ma i valori zero sono stati colorati con il grigio.

Attualmente, le mie mappe sono così:inserisci qui la descrizione dell'immagine

E questo è il codice per riprodurlo (file disponibile su https://www.dropbox.com/s/cypfdu1eaz2fuok/r.annual.tif?dl=0 ):

# Load required packages
library(rasterVis)

# open file
r.annual <- raster("Downloads/r.annual.tif")

# Set color palette
myTheme=rasterTheme(region=brewer.pal('RdBu', n=11))

# Plot
levelplot(annual.mask, par.settings=myTheme, margin=F)

Come posso assegnare il grigio a tutti i valori zero nella mia mappa qui sopra?

Risposte:


7

È possibile definire la propria tavolozza di colori concatenando due tavolozze di colori predefinite e il colore grigio desiderato come: [tavolozza giallo arancione rosso] + [colore grigio zero] + [tavolozza blues] . Per allineare il valore zero al colore grigio, è necessario utilizzare lo stesso numero di colori ( n) per le tavolozze dei colori predefinite.

Prova il codice commentato di seguito:

# Load libraries
library('rasterVis')

# open raster file
r.annual <- raster("r.annual.tif")

# Set color palette
zeroCol <-"#B3B3B3" # (gray color, same as your figure example)
reds <- rev(brewer.pal('YlOrRd', n = 7))
blues <- brewer.pal('Blues', n = 7)

myTheme <- rasterTheme(region = c(reds, zeroCol, blues))

# Plot
levelplot(r.annual, par.settings = myTheme, margin = FALSE, main = expression("Precipitation" ~ (mm ~ year^{-1})))

tracciare

Notare che la trama non sarà simile all'esempio di figura che hai pubblicato perché il tuo raster ha più dati sparsi con molti Nas


Grazie per la risposta. Mi sono reso conto che il mio problema è probabilmente troppi NA nella mappa. Prova ad aggiungere myTheme$panel.background$col = 'grey70'dopo la myThemelinea e tracciala per vedere il risultato. Apparentemente ora ho bisogno di sbarazzarmi delle aree NA eccessive intorno all'immagine.
thiagoveloso,

2
Prego! Si noti che il 0valore è diverso dal NAvalore. Inoltre hanno significati diversi. Puoi assegnare lo stesso colore ad entrambi, ma penso che non sia appropriato. Se vuoi avere un raster di precipitazione che assomigli alla figura che hai pubblicato (più dati), un suggerimento potrebbe forse tentare di interpolare i tuoi dati seguendo un modello di previsione appropriato.
Guzmán,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.