当前位置:首页>python>Python| Pearson/Spearman相关性分析热图

Python| Pearson/Spearman相关性分析热图

  • 2026-09-02 18:55:39
Python| Pearson/Spearman相关性分析热图

未经授权不得转载或抄袭。

转载合作请后台联系授权,侵权必究。

    

样式一 (有分组标签)

样式二(无分组标签)

01

准备数据文件

注:本文所用数据均为模拟数据,不具有实际意义。

  • x_data.csv:X 变量数据(行 = 样本,列 = 变量)

HP
FB
FGG
0.385245
-0.69711
-0.45945
2.552967
0.3599
-1.38562
-1.02145
-1.56059
0.212013
-0.8229
-0.84635
0.097319
  • y_data.csv:Y 变量数据(行 = 样本,列 = 变量)
MA1
MA2
MA3
-0.00426
-0.06732
-0.73637
1.403413
0.809445
0.936085
-0.93988
0.032333
-0.20808
-1.12419
-0.45203
-0.06208
  • groups.csv:Y 变量分组

MA1
Archaeal phyla
MA2
Archaeal phyla
MA3
Archaeal phyla

02

导入库和参数配置

导入库

import matplotlib.pyplot as pltimport pandas as pdimport numpy as npfrom matplotlib.patches import FancyBboxPatch, Rectanglefrom scipy import statsfrom matplotlib.colors import LinearSegmentedColormap

全局字体设置

plt.rcParams.update({    # 设置默认字体为 Arial    'font.sans-serif': ['Arial'],    # 设置全局字体大小为 13    'font.size': 13,    # 解决负号显示为方块的问题    'axes.unicode_minus': False})

参数配置区域 

# X 变量数据文件路径(行为样本,列为变量)X_DATA_PATH = 'x_data1.csv'# Y 变量数据文件路径(行为样本,列为变量)Y_DATA_PATH = 'y_data1.csv'# 分组文件路径,必须存在且格式正确(第一列忽略,第二列为每个 Y 变量的组名)GROUPING_PATH = 'groups1.csv'# 输出 Excel 文件路径,包含相关系数和显著性星号两个工作表EXCEL_RESULT = 'results1.xlsx'# 输出热图文件路径(PNG 格式)FIGURE_OUTPUT = 'heatmap1.png'# 相关分析方法:'pearson' 或 'spearman'CORRELATION_TYPE = 'spearman'# 热图整体尺寸(英寸),宽度和高度均为 7FIGURE_SIZE = (7, 7)# 每个单元格的边长(相对于坐标轴单位,默认 1 个单位对应一个单元格)CELL_SIDE = 0.85# 单元格圆角半径,数值越大越圆CORNER_ROUNDING = 0.08# 左侧分组标签区域的位置:[left, bottom, width, height](相对图形宽度比例)LEFT_GROUP_AXIS_POS = [0.08, 0.10, 0.05, 0.8]# 热图区域的位置(有分组时)HEATMAP_AXIS_POS = [0.10, 0.10, 0.80, 0.8]# 分组标签矩形的宽度(相对于左侧区域坐标)GROUP_RECT_WIDTH = 0.8# 分组标签之间的垂直间距(避免重叠)GROUP_GAP = 0.2# 自定义渐变色列表:深蓝 → 白→ 深红,对应相关系数 -1 到 1COLOR_LIST = ['#57B1AB','#FFFFFF','#FED060']

03

主程序

# ==================== 主程序 ====================def main():    # 使用 pandas 读取 X 变量数据文件    x_data = pd.read_csv(X_DATA_PATH)    # 读取 Y 变量数据文件    y_data = pd.read_csv(Y_DATA_PATH)    # 解析分组文件,获取分组块信息    group_blocks = parse_grouping(GROUPING_PATH)    # 计算相关系数矩阵和显著性星号矩阵    corr_matrix, star_matrix = calculate_correlation_matrix(        x_data, y_data, CORRELATION_TYPE    )    # 将结果保存到 Excel 文件    export_output(corr_matrix, star_matrix, EXCEL_RESULT, method_name=CORRELATION_TYPE)    # 绘制带分组标签的热图    plot_heatmap_with_groups(corr_matrix, star_matrix, group_blocks)

“今日分享至此✨”

完整代码获取,见评论区。

往期推荐

期刊图复现| Origin绘制3d点线图

Python| 用pycirclize库绘制环形柱状图

求点赞

求分享

求推荐

最新文章

随机文章