【发布时间】:2020-06-19 16:57:36
【问题描述】:
我想用两个轴绘制一个图例。具体来说,我结合了两个已分类的空间对象,第一个显示事件的强度,第二个显示该位置的事件概率。我想创建一个图例,显示组合栅格的像素在每个类别中的位置。我想创建的图例如下所示: Legend with two axes。
分类数据的正常图例是这样的:Original legend
这是我正在使用的数据类型的可重现示例:
library(raster)
library(rasterVis)
# setseed
set.seed(999)
# create raster (example of what would be the outcome of combining intensity and probability rasters)
plot.me<- raster(xmn=-110, xmx=-90, ymn=40, ymx=60, ncols=40, nrows=40)
val <- c(100:104, 200:204, 300:304, 400:404)
plot.me<- setValues(plot.me, sample(val,ncell(plot.me),replace=T))
###### Plotting
plot.me <- ratify(plot.me)
levelplot(plot.me,att="ID" ,
col.regions=c("#beffff","#73dfff","#d0ff73","#55ff00",
"#73b2ff","#0070ff","#70a800","#267300",
"#f5f57a","#ffff00","#e8beff","#df73ff",
"#f5ca7a","#ffaa00","#e600a9","#a80084"))
最简单的方法是创建绘图并稍后在图形编辑器中添加图例....但我确信必须有一种方法可以在 R 本身中执行此操作!我目前正在使用 rasterVis 包进行绘图,但如果 ggplot 或 base R 中有答案,这些同样受欢迎。
如果有一个可重复的中间步骤示例(即使用强度/概率栅格)更有用,请告诉我,我可以制作这些。
【问题讨论】:
-
我在 github 上见过的最接近的是 github.com/clauswilke/multiscales,但这不是你的例子。
-
使用
rasterVis我产生了this image。如果这是您正在寻找的,请尝试可用的代码here(“双变量图例”部分)。 -
@OscarPerpiñán 我觉得你的例子最接近我所希望的(能够在地图上绘制图例)。我很难理解您的代码的一部分 - pList 步骤的目的是什么?这是使后续步骤正常运行所必需的,还是特定于您创建的地图?
-
@dee_2_dee 此步骤生成水平图列表,每个水平图对应一个类(参见上面的代码,在“分类数据”部分)。此列表折叠为带有
Reduce和+.trellis的全局图。
标签: r ggplot2 legend spatial r-raster