当前位置:首页>python>Python绘制分组相关性矩阵图

Python绘制分组相关性矩阵图

  • 2026-10-11 07:16:08
Python绘制分组相关性矩阵图

代码绘制成果展示

绘图结果
分组相关性矩阵图展示四种变量在四个不同组别(L-S、L-D、H-S、H-D)下的分布特征及两两之间的关联性。其中,对角线区域通过核密度曲线展示了各个变量在不同分组下的数据密度分布趋势;左下三角区域利用散点图和线性回归趋势线,直观地呈现了任意两个变量之间的线性相关关系及各组的拟合走向;右上三角区域则同步提供了定量的统计学支持,展示了两个变量在总体以及各个组下计算得到的皮尔逊相关系数和显著性;矩阵最右侧一列通过箱线图对比了不同组别在单一变量上的中位数、四分位数及异常值分布;矩阵最下方一行用分层直方图展示了各组别在具体变量区间上的频数分布;右下角则以条形图直观地反映了 L-S、L-D、H-S、H-D 四个组别各自包含的样本总数量。
多种配色

代码解释

第一部分

库的导入以及字体设置
# =========================================================================================# ====================================== 1. 环境设置 =======================================# =========================================================================================import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsfrom scipy.stats import pearsonrimport matplotlib.gridspec as gridspecimport matplotlibmatplotlib.rcParams['pdf.fonttype'] = 42matplotlib.rcParams['ps.fonttype'] = 42plt.rcParams['font.family'] = 'Times New Roman'plt.rcParams['axes.unicode_minus'] = False

第二部分

设置颜色库
# =========================================================================================# ======================================2.颜色库============================================# =========================================================================================COLOR_THEMES = {    1: ['#88cadd', '#1f77b4', '#f9d276', '#f4988b'],}

第三部分

绘图函数:数据准备与网格初始化
# =========================================================================================# ======================================4.绘图函数============================================# =========================================================================================def plot_correlation_matrix(df):    group_col = df.columns[-1]  #分组列    fig = plt.figure(figsize=(15, 15))    #布局调整    gs = gridspec.GridSpec(n_vars + 1,  #行                           n_vars + 1,  #列                           wspace=0.08,  #列间距                           hspace=0.08)  #行间距

第四部分

绘图函数:底部直方图绘制
    #遍历行    for i in range(n_vars + 1):        #遍历列        for j in range(n_vars + 1):                    ax_inner.set_xlim(x_min - padding, x_max + padding)  #x轴范围                    ax_inner.set_ylabel('')  #y轴标题                    ax_inner.set_xlabel('')  #x轴标题                    #不是最左边第一列                    if j > 0:                        ax_inner.tick_params(left=False, labelleft=False)  #去掉y轴的刻度                    #最左侧                    else:                        ax_inner.yaxis.set_major_locator( plt.MaxNLocator(3, integer=True))  #y轴刻度标注数量                        ax_inner.tick_params(axis='y', labelsize=10)  #y轴字体大小                    #不是最后一组                    if k < n_groups - 1:                        ax_inner.tick_params(bottom=False, labelbottom=False)  #去掉X轴刻度                continue  #结束

第五部分

绘图函数:矩阵区域绘制(对角线核密度图、下三角散点图、上三角文本标注)
       ax = fig.add_subplot(gs[i, j])  #为除了底部直方图区域之外的其他区域分配坐标轴对象            # 判断是否处在主体变量间两两比较的正方形区域内部            if i < n_vars and j < n_vars:                #下三角                elif i > j:                    #遍历每个分组                    for group in group_order:                        sub_df = df[df[group_col] == group]  #该组别数据                        #绘制散点图                        sns.regplot(data=sub_df,  #数据                                    x=x_var,  #x                                    y=y_var,  #y                                    color=palette[group],  #颜色                                    scatter_kws={'s': 15, 'alpha': 0.8},  #大小、透明度                                    line_kws={'alpha': 0.8},  #线透明度                                    ax=ax)  #轴                #非首列子图                if j > 0:                    ax.tick_params(left=False, labelleft=False)  #去除刻度标注                if i < n_vars:                    ax.tick_params(bottom=False, labelbottom=False) #去除刻度标注

第六部分

绘图函数:右侧箱线图与右下角条形图绘制
           #最后一列,非最后一行            elif j == n_vars and i < n_vars:                sns.boxplot(data=df,  #数据                            x=group_col,  #x                            y=vars_list[i],  #y                            hue=group_col,  #按照不同分组类别进行颜色分类                            legend=False,  #图例                            palette=palette,  #颜色                            ax=ax,  #轴                            order=group_order,  #顺序                            width=0.6,  #宽                            fliersize=3)  #异常点                # 清空x、y轴标题                ax.set_xlabel('')                ax.set_ylabel('')                ax.text(1.1,  #x                        0.5,#y                        group_col,  #分组名                        rotation=-90,  #旋转                        va='center',  #垂直                        ha='left',  #水平                        fontsize=20,  #大小                        transform=ax.transAxes)  #坐标系

第七部分

绘图函数:侧边标签绘制以及绘图结果保存
    #属性    bbox_style = dict(boxstyle="square,pad=0.4",  #直角方块形状,间隔距离                      fc="white",  #填充色                      ec="black",  #外框色                      lw=1.2)  #外框线宽    fig.text(0.04,  #x             0.81,  #y             'Density',  #文本             va='center',  #垂直             ha='center',  #水平             rotation='vertical',  #旋转             fontsize=16,  #字体大小             bbox=bbox_style)  #外框属性

第八部分

绘图函数:侧边标签绘制以及绘图结果保存
# =========================================================================================# ======================================2.颜色库============================================# =========================================================================================if __name__ == '__main__':    excel_filename = r"data.xlsx"  #原始数据路径    df = pd.read_excel(excel_filename)  #读取数据    else:        scheme_id = 1        plot_correlation_matrix(df)        print('正在绘制方案:', scheme_id)

如何应用到你自己的数据

1.设置原始数据的保存路径,执行部分:

excel_filename = r"data.xlsx" 

2.设置是否进行批量绘图,执行部分:

plot_all = True

3.设置分组数据列,绘图函数部分:

group_col = df.columns[-1] 

4.设置绘图结果的保存地址,绘图函数部分:

fig.savefig(fr"correlation_matrix_{scheme_id}.png", dpi=300,bbox_inches='tight')

推荐

期刊图片复现|Python绘制二维偏依赖PDP图
期刊复现|python绘制基于SHAP分析和GAM模型拟合的单特征依赖图
期刊图片复现|python绘制带有渐变颜色shap特征重要性组合图(条形图+蜂巢图)
期刊复现|用Python绘制SHAP特征重要性总览图、依赖图、双特征交互效应SHAP图,解锁XGBoost模型的终极奥秘
期刊图片复现|Python绘制shap重要性蜂巢图+单特征依赖图+交互效应强度气泡图+交互效应依赖图(回归+二分类+分类)

获取方式

公众号中的所有所有的免费代码都已经下架了,都并入到付费部分里了,付费合集代码和数据的购买通道已经开通,全部合集100元,后续将会持续更新,决定购买请后台私信我,注意只会分享练习数据和代码文件,不会提供答疑服务,代码文件中已经包含了每行代码的完整注释,购买前请确保真的需要!!!

最新文章

随机文章