r - 如何在 R 中使用 levelplot 在绘图中添加子图?
问题描述
我想在我的主关卡中添加一个子图,类似于这张图片。我想要两张地图的纬度/经度轴,但我还没有设法找到一种方法来使用 levelplot 做到这一点。另外,我见过这个问题,但没有答案。我对 subplot 和新的 par() 感到很困惑,所以我真的需要一些帮助。
library("raster")
library ("rasterVis")
library("viridis")
r <- raster(system.file("external/test.grd", package="raster"))#subplot
r2<-r/2 #main plot
ckey <- list(labels=list(cex=1.5), height=1,space='top')
levelplot(r2,colorkey=ckey,margin=FALSE,xlab="", ylab="",col.regions=viridis,at=seq(100,500, len=20),
scales=list(x=list(cex=1.5),y=list(cex=1.5))) #from this point, I do not know how to add a subplot
解决方案
grid.arrange
从gridExtra
包装中可以为您做到这一点
library(raster)
library(rasterVis)
library(viridis)
library(gridExtra)
r <- raster(system.file("external/test.grd", package = "raster")) # subplot
r2 <- r / 2 # main plot
ckey <- list(labels = list(cex = 1.5), height = 1, space = "top")
lv1 <- levelplot(r2,
colorkey = ckey, margin = FALSE, xlab = "", ylab = "", col.regions = viridis, at = seq(100, 500, len = 20),
scales = list(x = list(cex = 1.5), y = list(cex = 1.5))) # from this point, I do not know how to add a subplot
lv2 <- levelplot(r2,
colorkey = ckey, margin = FALSE, xlab = "", ylab = "", col.regions = viridis, at = seq(100, 500, len = 20),
scales = list(x = list(cex = 1.5), y = list(cex = 1.5)))
lay <- rbind(
c(1, 1, NA, NA, NA),
c(1, 1, 2, 2, 2),
c(NA, NA, 2, 2, 2),
c(NA, NA, 2, 2, 2)
)
grid.arrange(lv1, lv2, layout_matrix = lay,
top = "Figure 1.",
bottom = "bottom\nlabel")
由reprex 包(v0.3.0)于 2019 年 11 月 22 日创建
推荐阅读
- node.js - 当行分隔符为换行符且 csv 数据中包含换行符时,如何使用 fs readfile 读取 csv?
- java - INSERT IGNORE 在 mysql 模式下使用 h2 引发主键冲突
- c# - Fluent Migration:如何在删除/更新语句中添加和/或子句
- javascript - 如何修复输入字段不通过多次更改更新 Firebase
- text - 如何仅删除 TextField 中没有文本的行?
- python - Pandas - 如何通过各种条件对多列进行“分组”?
- c# - 将年份值分配给 sbyte
- oracle - Oracle DB 12C 的 SQL Developer 连接错误
- hadoop - 同一个IBM账号下访问多个COS实例
- python - 计算文本文件中的小数位数并识别空格