2012-03-30 18 views
2

Ich habe Probleme beim Plotten eines Rasters mit Faktorwerten mit ggplot2.Plot Rasterfaktorwerte mit ggplot

library(ggplot2) 
library(raster) 

ersten Lastrasterdaten

f <- system.file("external/test.grd", package="raster") 
r <- raster(f) 

Extrakt Koordinaten und Werte

val <- getValues(r) 
xy <- as.data.frame(xyFromCell(r,1:ncell(r))) 
xy <- cbind(xy,val) 

Plot das Gitter unter Verwendung geom_raster(). Alles funktioniert gut.

ggplot(xy, aes(x=x, y=y, fill=val)) + geom_raster() + coord_equal() 

Ich habe kein kontinuierliches Raster, aber ein klassifiziertes. Reklassieren Sie das Raster:

r <- reclass(r, c(0,500,1, 500,2000,2)) 

val <- getValues(r) 
xy <- as.data.frame(xyFromCell(r,1:ncell(r))) 
xy <- cbind(xy,val) 

plotten Sie das klassifizierte Raster. Auch OK, aber Legende kontinuierlich ist

ggplot(na.omit(xy), aes(x=x, y=y, fill=val)) + geom_raster() + coord_equal() 

wenn ich die Werte als Faktor plotten, die Karte falsch wird

ggplot(na.omit(xy), aes(x=x, y=y, fill=factor(val))) + geom_raster() + coord_equal() 

Antwort

2

Plotten der umklassifiziert Plot funktioniert für mich mit R-Version 2.15.1, ggplot2_0.9.2 .1 und raster_2.0-12. Versuchen Sie gegebenenfalls, R, Pakete und Abhängigkeiten zu aktualisieren. Ausgehend von einer leicht modifizierten Version des Codes:

f <- system.file("external/test.grd", package="raster") 
r <- raster(f) 
r <- reclassify(r, c(0,500,1, 500,2000,2)) 
val <- getValues(r) 
xy <- as.data.frame(xyFromCell(r,1:ncell(r))) 
xy <- cbind(xy,val) 
ggplot(na.omit(xy), aes(x=x, y=y, fill=val)) + geom_raster() + coord_equal() 
p <- ggplot(na.omit(xy), aes(x=x, y=y, fill=factor(val))) + 
    geom_raster() + 
    coord_equal() 
try(ggsave(plot=p,<some file>,height=8,width=8)) 

ich: graham jeffries - reclassified raster

Beachten Sie, dass classify() abgeschrieben wurde und reclassify() ist sein Ersatz.