
代码绘制成果展示













代码解释


第一部分

# =========================================================================================# ====================================== 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, #xy=y_var, #ycolor=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, #xy=vars_list[i], #yhue=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, #x0.5,#ygroup_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, #x0.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 = 1plot_correlation_matrix(df)print('正在绘制方案:', scheme_id)

如何应用到你自己的数据

1.设置原始数据的保存路径,执行部分:
excel_filename = r"data.xlsx" 2.设置是否进行批量绘图,执行部分:
plot_all = True3.设置分组数据列,绘图函数部分:
group_col = df.columns[-1] 4.设置绘图结果的保存地址,绘图函数部分:
fig.savefig(fr"correlation_matrix_{scheme_id}.png", dpi=300,bbox_inches='tight')推荐


获取方式
