2016-05-12 21 views
0

Ich habe Rasterdaten, die binär codiert sind, und ich möchte levelplot im Paket rasterVis verwenden, um die Daten so zu plotten, dass 0 Werte grün und 1 Werte rot sind. Ich kann nicht finden, wie man eine Farbe für einen Wert spezifiziert.Farben für binäre Daten mit Levelplot angeben

Als Beispiel

# create a matrix with 0s and 1s 
nr <- 21 
nc <- 11 
m <- matrix(sample(0:1, nr*nc, replace=TRUE), nr, nc) 
# plot the matrix 
colour <- c("green", "red") 
levelplot(m, col.regions=colour, margin = FALSE) 

der gut arbeitet, und erzeugt diese Binary matrix

Aber wenn ich Matrizen, die alle 0 oder alle 1 sein passieren,

m2 <- matrix(0, nr, nc) 
levelplot(m2, col.regions=colour, margin = FALSE) 
m3 <- matrix(1, nr, nc) 
levelplot(m3, col.regions=colour, margin = FALSE) 

Ich bekomme das gleiche Diagramm, wenn ich möchte, dass 0 Werte grün und 1 Werte rot sind.

Matrix with only 0 or 1 values

Wie gebe ich so, dass, wenn es 0 ist, ist es grün herauskommt, und wenn es 1 ist, kommt es rot aus?

+0

'levelplot' ist Teil der Basis R. nicht erwähnen Sie bitte den Paketnamen (s) Sie verwenden in Ihrer Frage. – lmo

+0

@lmo Habe es gerade in –

+0

hinzugefügt Ich habe im Moment keinen Zugriff auf dieses Paket, also kann ich nichts testen, aber Sie könnten etwas mit 'ifelse' versuchen. Vielleicht col = 'ifelse (0," grün "," rot ")'. Diese Technik funktioniert auf jeden Fall für Basis-R-Diagramme. Überprüfen Sie den Hilfebereich: '? Levelplot', um zu sehen, ob Sie Farbarten manuell anpassen. – lmo

Antwort

0

Sie haben ratify zu benutzen, um Ihre raster Daten als kategorische Variable zu deklarieren (siehe this example):

library(rasterVis) 

nr <- 21 
nc <- 11 
m <- matrix(sample(c(0, 1), nr * nc, replace=TRUE), nr, nc) 
r <- raster(m) 

r <- ratify(r) 
rat <- levels(r)[[1]] 
rat$code <- c(0, 1) 
levels(r) <- rat 


levelplot(r) 

binary raster