You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中将3种光谱指数与LST共4个变量绘制到单张图中

在R中整合多变量与LST的相关性可视化

当然可以把三个光谱指数和LST整合到单张图里,核心是先把数据整理成长格式,再用ggplot2实现分组或分面可视化,以下是具体步骤:

1. 数据读取与预处理

首先用raster包读取ASCII栅格,合并为不含缺失值的数据框:

library(raster)
library(tidyverse)

# 读取各栅格文件(替换为你的文件路径)
ndvi_raster <- raster("ndvi.asc")
ndbi_raster <- raster("ndbi.asc")
ndwi_raster <- raster("ndwi.asc")
lst_raster <- raster("lst.asc")

# 合并栅格为数据框,剔除NA值
combined_df <- as.data.frame(stack(ndvi_raster, ndbi_raster, ndwi_raster, lst_raster)) %>%
  drop_na() %>%
  rename(NDVI = layer.1, NDBI = layer.2, NDWI = layer.3, LST = layer.4)

2. 转换为长格式数据

将三个光谱指数转为分组变量,方便后续绘图时按指数区分:

long_df <- combined_df %>%
  pivot_longer(
    cols = c(NDVI, NDBI, NDWI),
    names_to = "Spectral_Index",
    values_to = "Index_Value"
  )

3. 整合型散点图(带拟合线)

用不同颜色区分三个光谱指数,同时添加线性拟合线展示相关性,适合直观对比三者与LST的关系:

ggplot(long_df, aes(x = Index_Value, y = LST, color = Spectral_Index)) +
  geom_point(alpha = 0.3, size = 0.8) +  # 降低透明度避免点重叠
  geom_smooth(method = "lm", se = TRUE) +  # 线性拟合+置信区间
  labs(
    title = "光谱指数与地表温度(LST)的相关性",
    x = "光谱指数值",
    y = "地表温度(LST)",
    color = "光谱指数"
  ) +
  theme_minimal() +
  scale_color_manual(values = c("#228B22", "#CD5C5C", "#1E90FF"))  # 自定义颜色对应NDVI/NDBI/NDWI

可选:分面子图(避免点重叠)

如果散点过于密集,分面展示每个指数与LST的关系会更清晰,同时保持在同一张图内:

ggplot(long_df, aes(x = Index_Value, y = LST)) +
  geom_point(alpha = 0.3, size = 0.8) +
  geom_smooth(method = "lm", se = TRUE, color = "#FF4500") +
  facet_wrap(~Spectral_Index, scales = "free_x") +  # 每个指数单独子图,x轴自适应
  labs(
    title = "光谱指数与地表温度(LST)的相关性",
    x = "光谱指数值",
    y = "地表温度(LST)"
  ) +
  theme_minimal()

进阶:密度热力散点图

如果数据量极大,用热力图替代普通散点,能更直观展示数据分布密度:

ggplot(long_df, aes(x = Index_Value, y = LST)) +
  geom_hex(bins = 50) +
  geom_smooth(method = "lm", se = TRUE, color = "white") +
  facet_wrap(~Spectral_Index, scales = "free_x") +
  scale_fill_viridis_c(name = "点密度") +
  labs(
    title = "光谱指数与LST的相关性(密度热力图)",
    x = "光谱指数值",
    y = "地表温度(LST)"
  ) +
  theme_minimal()

注意:如果栅格数据投影不一致,需先用projectRaster()统一投影后再合并。

内容的提问来源于stack exchange,提问作者Jenny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 11:06:20