如何将Spatrastermap叠加到已有Spatrastermap实现分层显示?
实现分层地图显示:NA区域展示底层内容
要实现「x为白色(NA)区域显示底层地图p,有颜色区域显示上层地图x」的效果,只需利用ggplot的图层叠加特性,将上层栅格的NA区域设为透明即可。
完整实现代码
library(terra) library(ggplot2) # 读取示例高程栅格数据 f <- system.file("ex/elev.tif", package = "terra") r <- rast(f) # 绘制底层等高线图 p <- ggplot() + geom_spatraster_contour(data = r, color = "black") # 对栅格分类:将低于400的数值设为NA,得到上层栅格x x <- classify(r, cbind(-Inf, 400, NA)) # 合并图层:先画底层等高线,再叠加上层栅格(NA区域透明) combined_plot <- ggplot() + geom_spatraster_contour(data = r, color = "black") + geom_spatraster(data = x) + scale_fill_viridis_c(na.value = "transparent") + theme_minimal() print(combined_plot)
关键说明
- 图层顺序:必须先绘制底层的等高线图层,再叠加上层栅格,确保上层覆盖在底层之上
- 透明设置:
scale_fill_viridis_c(na.value = "transparent")是核心配置,它将上层栅格的NA区域设为完全透明,让底层等高线可以透过显示 - 配色替换:若需更改配色,可将
scale_fill_viridis_c替换为其他配色函数(如scale_fill_gradient)
内容的提问来源于stack exchange,提问作者MPB_2022
相关产品推荐
相关产品推荐

