使用rasterVis绘制具有离散颜色的栅格

时间:2013-11-28 02:14:41

标签: r ggplot2 raster rastervis

我想在rasterVis包中使用gplot绘制几个栅格。我刚刚发现了gplot(这非常棒,比使用data.frame(rasterToPoints(r))快得多)。但是,我无法显示离散图像。通常如果r是光栅,我会这样做:

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(r@data@values,n=5)

但如果将填充设置为cut,则会绘制因子的整数表示。

以下是一些可重现的数据:

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)

由于

1 个答案:

答案 0 :(得分:2)

gplotggplot的一个非常简单的包装器,所以不要指望 很多。相反,您可以使用其部分代码来构建自己的代码 解。这里的要点是使用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