2012-03-30 112 views
2

我有問題使用ggplot2繪製使用因子值的柵格。使用ggplot繪製柵格因子值

library(ggplot2) 
library(raster) 

第一,負載光柵數據

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

提取座標和值

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

情節使用geom_raster電網()。一切正常。

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

我沒有連續的光柵,但分類。重新分類柵格:

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) 

繪製分類柵格。還行,但傳說如果我繪製值的因素是連續

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

,地圖變得錯

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

回答

2

繪製的重新劃分地塊,使用R版本2.15.1對我的作品,ggplot2_0.9.2 .1和raster_2.0-12。如果適用,請嘗試更新R,軟件包和依賴項。從你的代碼稍加修改的版本入手:

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

我得到: graham jeffries - reclassified raster

注意classify()現在已經貶值和reclassify()是它的替代品。