Me gustaría trazar una leyenda con dos ejes. Específicamente, he combinado dos objetos espaciales que se han clasificado, el primero que muestra la intensidad de un evento y el segundo que muestra la probabilidad del evento en esa ubicación. Quiero crear una leyenda que muestre dónde caen los píxeles del ráster combinado en cada categoría. La leyenda que me gustaría crear se vería así: Leyenda con dos ejes .
La leyenda normal de los datos clasificados se ve así: Leyenda original
Aquí hay un ejemplo reproducible del tipo de datos que estoy usando:
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"))
La forma más fácil sería crear la trama y agregar la leyenda más adelante en un editor de gráficos ... ¡pero estoy seguro de que debe haber una manera de hacerlo en R! Actualmente estoy tramando con el paquete rasterVis, pero si hay respuestas en ggplot o base R, estas son igualmente bienvenidas.
Si fuera más útil tener un ejemplo reproducible de los pasos intermedios (es decir, con los rásteres de intensidad / probabilidad), hágamelo saber y puedo producirlos.




rasterVisproduje esta imagen . Si esto es lo que está buscando, pruebe el código disponible aquí (sección "Leyenda bivariada).Reducey+.trellis.Respuestas:
Una solución será hacer dos gráficos y combinarlos usando la
grid.arrangefunción delgridExtrapaquete, por ejemploPrimero, convierto su rasterLayer en un tibble usando la función publicada en esta publicación: ¿ Superponer capa de ráster en el mapa en ggplot2 en R?
(PD: modifiqué su
valobjeto para hacer que solo 16 colores diferentes coincidan con el patrón de color que proporcionó. En su ejemplo,valtiene 20 valores diferentes)Luego, creo el diagrama de puño, el mapa de calor usando
geom_tile:Luego, creo un marco de datos separado para la leyenda:
Ahora, hice la trama de la leyenda:
Y finalmente, los combino:
¿Se ve lo que estás tratando de conseguir?
NB: Probablemente pueda trazar directamente su objeto ráster,
ggplot2pero no estaba seguro del procedimiento exacto. Además, puedes jugar con el diseñogrid.arrangepara hacer que la trama se vea exactamente como quieresfuente