2017-06-24 30 views
1

我正在尝试使用rasterVis程序包的levelplot函数与gridExtragrid.arrange结合使用七个栅格绘制一个面板。使用rasterVis和gridExtra排列奇数个地块

我几乎得到了什么,我需要通过使用下面的代码:

# 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) 

这将产生这个数字:

enter image description here

然而,有一些事情我还需要改进:

  1. 如何减少瓶子里的情节之间的空白om行?
  2. 如何为六个底部栅格添加单个组合图例,优先放置在图的底部?

这可能实现使用rasterVisgridExtra?有没有其他方法可以使用?

+1

每个地块提供保证金,并减少它的期望。 – Masoud

+0

@Masoud,谢谢你的建议。但是,如果我添加'lattice.options( layout.heights = list(bottom.padding = list(x = 0),top.padding = list(x = 0)), layout.widths = list(left.padding = list(x = 0),right.padding = list(x = 0)) )' – thiagoveloso

回答

0

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

关于图例,您可以使用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)) 

(不用说,磨制似乎大幅更好的选择)

enter image description here