使用rasterVis和gridExtra排列奇数个图

我正在尝试使用rasterVis软件包的levelplot函数与gridExtragrid.arrange结合绘制七个栅格的面板。

我几乎通过使用下面的代码得到我需要的东西:

# load required packages
library(rasterVis)
library(gridExtra)

# load sample raster
f <- system.file("external/test.grd", package="raster")
r <- raster(f)

# create plots
p1 <- levelplot(r, xlab=NULL, ylab=NULL, margin=FALSE)
p2 <- levelplot(r*2, xlab=NULL, ylab=NULL, margin=FALSE,colorkey=FALSE)

# put plots in list
p.list <- list(p1,p2,p2,p2,p2,p2,p2)

# create layout
lay <- rbind(c(1,1,1),
             c(2,3,4),
             c(5,6,7))

# arrange plots
grid.arrange(grobs=p.list, layout_matrix=lay)

这产生了这个数字:

在这里输入图像描述

不过,我仍然需要改进一些东西:

  • 如何减少底行中的图之间的空白空间?
  • 如何为六个底部栅格添加一个单独的组合图例,优先放置在图的底部?
  • 这可能实现使用rasterVisgridExtra ? 有没有其他方法可以使用?


    白色空间是格子边距设置的组合,但也有固定纵横比的图(除非设备本身具有兼容的纵横比,否则它们不能太近)。

    关于图例,您可以使用draw.colorkey() ,但从我可以告诉您需要手动确保颜色匹配通过明确地将它们传递给图和密钥。

    # load required packages
    library(rasterVis)
    library(gridExtra)
    
    # load sample raster
    f <- system.file("external/test.grd", package="raster")
    r <- raster(f)
    
    my_theme <- rasterTheme(region = blues9)
    
    # create plots
    p1 <- levelplot(r, xlab=NULL, ylab=NULL, margin=FALSE, par.settings = my_theme)
    leg <- p1$legend$right$args$key
    p1$legend <- list()
    p2 <- levelplot(r*2, xlab=NULL, ylab=NULL, margin=FALSE,colorkey=FALSE, par.settings = my_theme)
    
    # put plots in list
    p.list <- list(p1,p2,p2,p2,p2,p2,p2)
    
    # create layout
    lay <- rbind(c(NA,1,NA),
                 c(2,3,4),
                 c(5,6,7),
                 c(8,8,8))
    
    leg$col <- my_theme$regions$col
    legGrob <- draw.colorkey(key = leg, vp = grid::viewport(height=0.5))
    # arrange plots
    grid.arrange(grobs=c(p.list, list(legGrob)), layout_matrix=lay,
                 vp = grid::viewport(width=0.7,height=1))
    

    (不用说,多角度似乎是更好的选择)

    在这里输入图像描述

    链接地址: http://www.djcxy.com/p/68931.html

    上一篇: Arrange odd number of plots using rasterVis and gridExtra

    下一篇: How to plot histograms of raw data on the margins of a plot of interpolated data