2013-11-28 84 views
0

我想要在rasterVis軟件包中使用gplot繪製一些柵格。我剛剛發現gplot(這太棒了,比data.frame(rasterToPoints(r)))快得多。但是,我無法得到一個獨立的圖像顯示。通常如果r是光柵,我會這樣做:使用rasterVis繪製離散顏色的柵格

rdf=data.frame(rasterToPoints(r)) 
rdf$cuts=cut(rdf$value,breaks=seq(0,max(rdf$value),length.out=5)) 
ggplot(rdf)+geom_raster(aes(x,y,fill=cuts)) 

但是有沒有辦法避免調用rasterToPoints?大柵格速度很慢。我也發現我可以這樣做:

cuts=cut_interval([email protected]@values,n=5) 

,但如果你設置填充以削減其繪製的因素整數表示。

下面是一些重複性的數據:

x=seq(-107,-106,.1) 
y=seq(33,34,.1) 
coords=expand.grid(x,y) 
rdf=data.frame(coords,depth=runif(nrow(coords),0,2))) 
names(rdf)=c('x','y','value') 
r=rasterFromXYZ(rdf) 

感謝

回答

2

gplot是一個非常簡單的包裝圍繞ggplot所以不要從它期望太高 了。相反,您可以使用其部分代碼來構建自己的 解決方案。這裏的要點是使用sampleRegular來減少要顯示的點數 。

library(raster) 
library(ggplot2) 

x <- sampleRegular(r, size=5000, asRaster = TRUE) 
dat <- as.data.frame(r, xy=TRUE) 
dat$cuts <- cut(dat$value, 
    breaks=seq(0, max(dat$value), length.out=5)) 
ggplot(aes(x = x, y = y), data = dat) + 
    geom_raster(aes(x, y, fill=cuts)) 

不過,如果你是開放的,而不ggplot2陰謀可能對你有用 這個其他 answer

+0

感謝您的提示。 sampleRegular看起來很有前途,不知道這一點。我也不會被綁定到ggplot2,儘管我對它的熟悉使它很有吸引力。 – Dominik

相關問題