【问题标题】:plot raster with discrete colors using rasterVis使用 rasterVis 绘制具有离散颜色的栅格
【发布时间】:2017-09-29 10:12:31
【问题描述】:

我想使用 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)

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

这里有一些可重现的数据:

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)

谢谢

【问题讨论】:

    标签: r ggplot2 raster rastervis


    【解决方案1】:

    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.

    【讨论】:

    • 感谢您的提示。 sampleRegular 看起来很有希望,但我不知道。我也不受 ggplot2 的约束,尽管我对它的熟悉使它很有吸引力。
    猜你喜欢
    • 1970-01-01
    • 2020-04-30
    • 2020-12-22
    • 2015-12-26
    • 1970-01-01
    • 2015-06-06
    • 2016-02-18
    • 2016-04-02
    • 2017-12-17
    相关资源
    最近更新 更多