【问题标题】:Elegantly combining continuous and factor rasters优雅地结合连续和因子栅格
【发布时间】:2018-12-30 10:54:38
【问题描述】:

当使用rasterVis::levelplot 使用print(..., more=TRUE) 绘制连续栅格和因子栅格的混合时,面板的高度和宽度不一致。这似乎是由于颜色键(图例)的宽度和颜色键的刻度标签不同造成的。

例如:

library(raster)
library(rasterVis)

r1 <- raster(matrix(runif(100), 10))
r2 <- as.factor(raster(matrix(rbinom(100, 1, 0.8), 10)))
levels(r2)[[1]]$name <- c('gray', 'lightblue')

p1 <- levelplot(r1, margin=FALSE, scales=list(draw=FALSE), 
                at=seq(0, 1, length.out=100))
p2 <- levelplot(r2, scales=list(draw=FALSE), 
                col.regions=c('gray90', 'lightblue'))

print(p1, split=c(1, 1, 1, 2), more=TRUE)
print(p2, split=c(1, 2, 1, 2))

有没有办法修改网格图形参数(例如,布局宽度/高度?)以实现一致大小的绘图,使其看起来更像是绘制 RasterStack 时使用的布局?

或者是否有组合这些栅格的替代方法,可以扩展到具有多列和多行的布局? (其他绘图框架也不错,但基图不支持因子栅格。)

【问题讨论】:

    标签: r plot raster lattice rastervis


    【解决方案1】:

    您可以使用latticeExtra 包中的?c.trellis 函数。

    library(latticeExtra)
    c(p1, p2, layout = c(1, 2), merge.legends = TRUE)
    

    但是,在您的情况下,图例略有重叠。如果绘图的顺序不相关,您可以改用

    c(p2, p1, layout = c(1, 2), merge.legends = TRUE)
    

    或者,您可以在第一个绘图中添加一些空间,如下所示。

    p1 <- levelplot(r1, margin=FALSE, scales=list(draw=FALSE), 
                    at=seq(0, 1, length.out=100), 
                    par.settings = rasterTheme(layout.widths = list(key.right = 1.5)))
    c(p1, p2, layout = c(1, 2), merge.legends = TRUE)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-03
      • 2018-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多