使用rasterVis和gridExtra排列奇数个图
我正在尝试使用rasterVis
软件包的levelplot
函数与gridExtra
的grid.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)
这产生了这个数字:
不过,我仍然需要改进一些东西:
这可能实现使用rasterVis
和gridExtra
? 有没有其他方法可以使用?
白色空间是格子边距设置的组合,但也有固定纵横比的图(除非设备本身具有兼容的纵横比,否则它们不能太近)。
关于图例,您可以使用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