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

R语言如何绘制仅展示显著相关性的corr.test结果热图

相关性热图实现方案

核心逻辑是先通过校正后p值矩阵做掩码,把不满足阈值的相关系数替换为缺失值,再调用热图函数绘制,热图会自动对缺失值做单独着色、不展示对应相关性数值。


步骤1:预处理相关性矩阵

test$r和test$p.adj行名、列名完全匹配,可以直接按位置过滤:

# 备份原始结果避免误修改
r_sig <- test$r
# 将p.adj >=0.5的位置替换为NA,热图不会展示这类位置的相关性值
r_sig[test$p.adj >= 0.5] <- NA

步骤2:绘制热图

方案A:pheatmap快速绘制(推荐)

pheatmap是矩阵类热图最常用的工具,默认参数适配度高:

# 未安装包时先运行安装
if (!requireNamespace("pheatmap", quietly = TRUE)) {
  install.packages("pheatmap")
}
library(pheatmap)

pheatmap(
  mat = r_sig,
  cluster_rows = TRUE,  # 不需要行聚类可改为FALSE
  cluster_cols = TRUE,  # 不需要列聚类可改为FALSE
  display_numbers = FALSE, # 需要在格子内显示相关系数值改为TRUE
  color = colorRampPalette(c("#2b6cb0", "white", "#c53030"))(100), # 蓝-白-红配色适配正负相关
  na_col = "grey90", # 不满足阈值的格子用浅灰色标记
  main = "Spearman相关性热图(校正后p<0.5)"
)

方案B:ggplot2自定义绘制

如果需要更高的图形自定义自由度,可以转为长表格式用ggplot2绘制:

if (!requireNamespace("tidyverse", quietly = TRUE)) {
  install.packages("tidyverse")
}
library(tidyverse)

# 宽矩阵转成长数据框
plot_df <- r_sig %>%
  as.data.frame() %>%
  rownames_to_column("feature_x") %>%
  pivot_longer(cols = -feature_x, names_to = "feature_y", values_to = "spearman_r")

ggplot(plot_df, aes(x = feature_y, y = feature_x, fill = spearman_r)) +
  geom_tile(colour = "white", linewidth = 0.5) +
  scale_fill_gradient2(
    low = "#2b6cb0", mid = "white", high = "#c53030",
    midpoint = 0, na.value = "grey90", name = "相关系数"
  ) +
  labs(x = NULL, y = NULL, title = "Spearman相关性热图(校正后p<0.5)") +
  theme_bw() +
  theme(
    axis.text.x = element_text(angle = 45, hjust = 1, vjust = 1),
    panel.grid = element_blank()
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 04:36:56