如何在R中绘制定制化相关性热力图(仅展示ab1与其他列关联)
如何在R中绘制指定列的相关性热力图
问题背景
我拥有一个包含ab1、ab2、ab3、ab4、ab5、ab6共6列的dataframe,仅需要绘制ab1分别与ab2、ab3、ab4、ab5、ab6之间的相关性热力图,无需展示其他列之间的关联,最终要得到2*6规格的热力图。
实现步骤
1. 准备数据(示例)
首先生成模拟数据,或替换为你的真实数据集:
set.seed(123) df <- data.frame(ab1 = rnorm(100), ab2 = rnorm(100), ab3 = rnorm(100), ab4 = rnorm(100), ab5 = rnorm(100), ab6 = rnorm(100))
2. 构建目标相关矩阵
我们需要提取ab1与所有列的相关性,并构造2行6列的矩阵以满足规格要求:
# 计算完整相关矩阵 cor_matrix <- cor(df) # 构造2行6列的矩阵:第一行是ab1与所有列的相关系数,第二行重复ab1的相关系数(或自相关+其他列相关系数) target_cor <- rbind(cor_matrix["ab1", ], cor_matrix["ab1", ]) # 设置行名,保持与列名对应 rownames(target_cor) <- c("ab1", "ab1")
3. 绘制热力图
使用pheatmap包绘制(未安装则先运行install.packages("pheatmap")):
library(pheatmap) pheatmap(target_cor, cluster_rows = FALSE, cluster_cols = FALSE, display_numbers = TRUE, # 显示具体相关系数 cellwidth = 45, cellheight = 45, main = "ab1与各列相关性热力图")
关键说明
- 构造2行矩阵是为了满足2*6的规格,第二行可重复ab1的相关系数,不影响ab1与其他列的关联展示
- 关闭聚类(
cluster_rows = FALSE和cluster_cols = FALSE)可保持列的原始顺序 - 可选:若需要第二行显示不同内容,可调整
target_cor的第二行数据,只要保证行数为2即可
内容的提问来源于stack exchange,提问作者nicholaspooran
相关产品推荐
相关产品推荐

