当前位置:首页>python>Python绘制不同区域相关性分析对比复合热图

Python绘制不同区域相关性分析对比复合热图

  • 2026-10-11 05:47:15
Python绘制不同区域相关性分析对比复合热图

代码绘制成果展示

绘图结果
此图直观地对比了多个变量在两个不同区域之间的相关性分布特征。主对角线用作变量标签的占位,将其划分为上三角区域和下三角区域来表示不同区域数据分析结果。从具体数值来看,无论是在Region A还是Region B中,绝大多数变量对之间的相关系数绝对值都处于较低水平;尽管整体相关性偏弱,但矩阵中仍有少数几个特定的变量组合带有星号标注,表明这几组的线性关系达到了统计学上的显著性水平。
多种配色

代码解释

第一部分

库的导入以及字体设置
# =========================================================================================# ====================================== 1. 环境设置 =======================================# =========================================================================================import matplotlib.pyplot as pltimport seaborn as snsimport numpy as npimport pandas as pdfrom matplotlib.patches import Rectanglefrom scipy import statsplt.rcParams['font.family'] = 'serif'plt.rcParams['font.serif'] = ['Times New Roman']plt.rcParams['axes.unicode_minus'] = Falseimport matplotlibmatplotlib.rcParams['pdf.fonttype'] = 42matplotlib.rcParams['ps.fonttype'] = 42

第二部分

设置颜色库
# =========================================================================================# ======================================2.颜色库============================================# =========================================================================================COLOR_SCHEMES = {    1: ('RdBu_r', 'coolwarm'),}

第三部分

绘图函数:热图标注文本生成
# =========================================================================================# ======================================4.绘图函数============================================# =========================================================================================def plot_advanced_correlation_chart(df_corr_a, df_corr_b, p_matrix_a, p_matrix_b, labels_diag, scheme_id,color_schemes):    num_vars = len(labels_diag) #变量数量    annot_combined_text = np.empty_like(df_corr_a.values, dtype=object) #用于存放带星号的注释文本    # 遍历行    #转为DataFrame供热力图调用    df_annot_combined = pd.DataFrame(annot_combined_text, #注释文本                                     index=labels_diag, #行标签                                     columns=labels_diag) #列标签

第四部分

绘图函数:掩码与画布初始化
    mask_a = np.ones_like(df_corr_a, dtype=bool) #初始化A区全掩码    mask_a[np.triu_indices_from(mask_a, k=1)] = False #开放上三角,遮挡其余部分    plt.subplots_adjust(left=0.20, #左                        right=0.80, #右                        top=0.85, #上                        bottom=0.08) #下

第五部分

绘图函数:绘制双拼色热力图
    cmap_a, cmap_b = color_schemes[scheme_id] #提取配色    sns.heatmap(df_corr_a, #数据                mask=mask_a, #上三角掩码                annot=df_annot_combined, #文本                fmt='s', #字符串                cmap=cmap_a, #配色                ax=ax, #轴                **common_heatmap_kws) #参数    #下三角热力图    sns.heatmap(df_corr_b,#数据                mask=mask_b, #下三角掩码                annot=df_annot_combined, #文本                fmt='s', #字符串                cmap=cmap_b, #配色                ax=ax, #轴                **common_heatmap_kws) #参数

第六部分

绘图函数:对角线与主图格式化
    ax.set_aspect('equal') #X轴Y轴比例    #遍历变量名对角线填充变量标签    ax.set_xticks([]) #去掉X轴刻度线    ax.set_xticklabels([]) #去掉X轴刻度文本    ax.set_yticks([]) #去掉Y轴刻度线    ax.set_yticklabels([]) #去掉Y轴刻度文本    #标题    ax.set_title("Correlations analysis", #文本                 fontsize=12, #大小                 fontweight='bold', #加粗                 pad=20) #间距

第七部分

绘图函数:颜色条布局与生成
    cbar_width = 0.02 #颜色条宽度    cbar_height_ratio = 0.9 #颜色条相对主图的高度占比    cbar_bottom = ax.get_position().y0 + ax.get_position().height * (1 - cbar_height_ratio) / 2 #颜色条y轴起始点    cbar_height = ax.get_position().height * cbar_height_ratio #颜色条绝对高度    gap_heatmap_to_cbar = 0.02 #主图边缘到颜色条的水平间距    heatmap_left = ax.get_position().x0 #主图左侧x坐标    heatmap_right = ax.get_position().x1 #主图右侧x坐标    cb_b.ax.yaxis.set_ticks_position('left') #左侧颜色条刻度线    cb_b.ax.yaxis.set_label_position('left') #左侧颜色条刻度数值    cb_a.ax.tick_params(labelsize=8) #右侧颜色条刻度字体大小    cb_b.ax.tick_params(labelsize=8) #左侧颜色条刻度字体大小

第八部分

执行部分:包括绘图数据的读取、分析、绘图函数调用
# =================================================================================================# ======================================5.执行部分=====================================================# =================================================================================================if __name__ == '__main__':    excel_file_path = r'data.xlsx'#原始数据    #读取两个区域的数据    df_data1 = pd.read_excel(excel_file_path, sheet_name='Region_A')    df_data2 = pd.read_excel(excel_file_path, sheet_name='Region_B')    plot_all = True    if plot_all:        for scheme_id in COLOR_SCHEMES.keys():            selected_hex_colors = COLOR_SCHEMES[scheme_id]            print('正在绘制并保存方案:', scheme_id)            plot_advanced_correlation_chart(df_corr_a, #相关系数                                            df_corr_b, #相关系数                                            p_matrix_a, #p值                                            p_matrix_b, #p值                                            labels_diag, #变量名                                            scheme_id, #配色方案                                            COLOR_SCHEMES) #颜色库    else:        scheme_id = 1        selected_hex_colors = COLOR_SCHEMES[scheme_id]        print('正在绘制并保存方案:', scheme_id)        plot_advanced_correlation_chart(df_corr_a, df_corr_b, p_matrix_a, p_matrix_b, labels_diag, scheme_id,COLOR_SCHEMES)

如何应用到你自己的数据

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

excel_file_path = r'data.xlsx'#原始数据

2.读取两个区域的数据,执行部分:

df_data1 = pd.read_excel(excel_file_path, sheet_name='Region_A')df_data2 = pd.read_excel(excel_file_path, sheet_name='Region_B')

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

plot_all = True

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

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

推荐

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

获取方式

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

最新文章

随机文章