Legenda de varredura em R: como colorir valores específicos?

30

Eu tenho um modelo de elevação plotado em R

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

Gráfico de elevação

Alguns dos valores estão abaixo do nível do mar (0) e eu gostaria que esses fossem exibidos em vermelho. Como atribuir intervalos específicos a cores específicas na plotagem ()?

Simbamangu
fonte

Respostas:

33

Aqui está um exemplo muito simples

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)

insira a descrição da imagem aqui

Você só precisa passar no gráfico um vetor de pontos de interrupção e um vetor de cores para corresponder aos pontos de interrupção. Confira o RColorbrewerpacote para algumas rampas coloridas muito legais. Verifique também o classIntpacote para fazer os pontos de interrupção.

Andy W
fonte
Excelente - embaraçoso quanto tempo eu brinquei com isso. Existe uma maneira simples de importar rampas coloridas do color brewer? EDIT: desculpe, agora vejo que você está se referindo a um pacote, não ao site!
Simbamangu
3
@ Simbamangu, todos nós já estivemos lá. Na verdade, encontro muitos exemplos de ofuscar o que realmente está sendo passado como pontos de interrupção e cores usando objetos criados a partir de outros pacotes (como os que eu sugiro). Eu acho que é mais simples vê-lo assim, e depois usar os outros pacotes para criar pontos de interrupção e rampas de cores apropriados sem fazer muito trabalho.
21711 Andy
4
Eu concordo completamente com isso - os exemplos em muitos dos pacotes R são realmente difíceis de entender, com muito de outros objetos!
Simbamangu #