Rasterlegende in R: Wie färbe ich bestimmte Werte ein?

30

Ich habe ein Höhenmodell in R eingezeichnet

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

Höhengrundstück

Einige der Werte liegen unter dem Meeresspiegel (0), und ich möchte, dass diese rot angezeigt werden. Wie kann ich bestimmten Farben im Plot () bestimmte Bereiche zuweisen?

Simbamangu
quelle

Antworten:

33

Hier ist ein wirklich einfaches Beispiel

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)

Bildbeschreibung hier eingeben

Sie müssen lediglich einen Vektor von Unterbrechungspunkten und einen Vektor von Farben für die Darstellung übergeben, um die Unterbrechungspunkte abzugleichen. Schauen Sie sich das RColorbrewerPaket für einige sehr schöne eingebaute Farbverläufe an. Schauen Sie sich auch das classIntPaket an, um die Haltepunkte zu setzen.

Andy W
quelle
Sehr peinlich, wie lange ich damit rumgespielt habe. Gibt es eine einfache Möglichkeit, Farbverläufe aus Color Brewer zu importieren? EDIT: Entschuldigung, ich sehe jetzt, Sie beziehen sich auf ein Paket, nicht die Website!
Simbamangu
3
@ Simbamangu, wir waren alle da. Ich finde tatsächlich, dass viele der Beispiele, die dazu dienen, das zu verschleiern, was tatsächlich als Haltepunkte und Farben übergeben wird, indem Objekte verwendet werden, die aus anderen Paketen (wie den von mir vorgeschlagenen) erstellt wurden. Ich denke, es ist am einfachsten, dies so zu sehen, und dann die anderen Pakete zu verwenden, um geeignete Haltepunkte und Farbrampen zu erstellen, ohne so viel Arbeit zu erledigen.
Andy W
4
Dem stimme ich voll und ganz zu - die Beispiele in vielen der R-Pakete sind wirklich schwer herauszufinden, da zu viel von anderen Objekten ausgeführt wurde!
Simbamangu