首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用rasterVis绘制离散色光栅

用rasterVis绘制离散色光栅
EN

Stack Overflow用户
提问于 2013-11-28 02:14:41
回答 1查看 2.1K关注 0票数 0

我有几个光栅,我想用rasterVis包中的gplot来绘制。我刚刚发现了gplot (它非常棒,比做data.frame(rasterToPoints(R))要快得多)。然而,我无法得到一个离散的图像来显示。通常情况下,如果r是光栅,我会:

代码语言:javascript
复制
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吗?它的速度非常慢与大光栅。我确实找到了我能做到的

代码语言:javascript
复制
cuts=cut_interval(r@data@values,n=5)

但是,如果您将填充设置为裁剪,它会绘制因子的整数表示。

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

代码语言:javascript
复制
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)

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-28 16:25:33

gplotggplot的一个非常简单的包装器,所以不要对它期望太高。相反,您可以使用其部分代码来构建您自己的解决方案。这里的要点是使用sampleRegular来减少要显示的点数。

代码语言:javascript
复制
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很有用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20256538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档