R语言使用pheatmap绘制两组变量特征相关系数热图

Cora
Cora
发布时间:2026-10-16 | 5人浏览过
原创

本文演示如何在R语言中使用pheatmap和psych包,针对两组不同维度或特征的变量集,计算其Pearson相关系数矩阵,并定制绘制包含聚类效果、数值标注及显著性星号的热图。

准备数据

首先需要导入两组分别包含不同变量的数据集,并确保它们具有相同的行观测数(如样本ID对应),以便进行逐行配对分析。以下示例将两列数据存储为csv文件后读取:

> # 设置工作目录并加载数据
> setwd("D:/weixin/")
> rows <- read.csv("rows.csv")
> cols <- read.csv("cols.csv")
> 
> # 查看数据结构
> str(rows)
'data.frame':   100 obs. of  6 variables:
 $ r1: num  476 482 640 452 308 ...
 $ r2: num  2059 1987 1952 1927 1854 ...
 # ... 省略其他列
> str(cols)
'data.frame':   100 obs. of  5 variables:
 $ c1: num  2387 2437 2484 2349 2198 ...
 # ... 省略其他列

生成基础相关性热图

使用psych包的corr.test()函数计算两组变量间的双边Pearson相关系数及其P值。随后调用pheatmap绘制热力图。clustering_method参数控制聚类方式,默认采用平均连接法(average)。

> library(psych)
> data.corr <- corr.test(rows, cols, method="pearson", adjust="fdr")
> data.r <- data.corr$r      # 提取相关系数矩阵
> data.p <- data.corr$p      # 提取P值矩阵
> 
> library(pheatmap)
> pheatmap(data.r, clustering_method="average")

第1步:固定行顺序仅对列聚类

目的:保持第一组变量(行)在图中的顺序不变,仅根据第二组变量(列)与第一组的相关程度对列进行重新排序。

操作:将cluster_rows设置为F。

> pheatmap(data.r, clustering_method="average", cluster_rows=F)

第2步:在图中显示具体相关系数

目的:直观展示每个网格点的相关数值,便于读取精确度。

入口:pheatmap函数的display_numbers参数。

动作:先将数值保留两位小数,再传入绘图函数。

> # 格式化为保留两位小数的字符矩阵
> data.r.fmt <- matrix(sprintf("%.2f", data.r), nrow=nrow(data.p))
> pheatmap(data.r, clustering_method="average", cluster_rows=F, display_numbers=data.r.fmt)

第3步:添加显著性标记

目的:在热图上标注统计显著性水平,增强图表的科学严谨性。

重要参数:基于P值定义显著性阈值,通常 P<0.01 记为 ***,P<0.05 记为 **,P<0.1 记为 *。

操作:定义辅助函数生成星号矩阵,并替换display_numbers内容。

> getSig <- function(dc) {
+   sc <- ''
+   if (dc < 0.01) sc <- '***'
+   else if (dc < 0.05) sc <- '**'
+   else if (dc < 0.1) sc <- '*'
+   sc
+ }
> sig.mat <- matrix(sapply(data.p, getSig), nrow=nrow(data.p))
> str(sig.mat)
 chr [1:6, 1:5] "*" "***" "" "***" "***" ...
> pheatmap(data.r, clustering_method="average", cluster_rows=F, display_numbers=sig.mat)

进阶优化:调整聚类与添加标题

若需完全改变聚类策略或添加图表标题,可继续使用pheatmap的其他参数。例如将聚类方法改为“完整连接”(complete),并补充主标题main。

> pheatmap(data.r, clustering_method="complete", cluster_rows=F, display_numbers=sig.mat, main="Corr Heatmap")

以上就是R语言两组变量特征相关关系热图绘制画法的详细内容,更多关于R语言绘制相关关系热图的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表