2017-06-24 36 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