2012-03-30 3 views
2

J'ai des problèmes pour tracer un raster avec des valeurs de facteur en utilisant ggplot2.valeurs de facteur de trame de tracé avec ggplot

library(ggplot2) 
library(raster) 

premières, charge des données raster

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

de coordonnées d'extraction et des valeurs

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

tracé de la grille en utilisant geom_raster(). Tout fonctionne bien.

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

Je n'ai pas de raster continu, mais un classifié. Reclassez le 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) 

tracer le raster classé. Aussi OK, mais la légende est continue

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

si je tracer les valeurs en tant que facteur, la carte devient mauvaise

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

Répondre

2

Traçage l'intrigue reclassées fonctionne pour moi d'utiliser la version R 2.15.1, ggplot2_0.9.2 .1 et raster_2.0-12. Le cas échéant, essayez de mettre à jour R, les packages et les dépendances. Partant d'une version légèrement modifiée de votre code:

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)) 

je reçois: graham jeffries - reclassified raster

Notez que classify() a été dépréciée et reclassify() est son substitut.

Questions connexes