
代码绘制成果展示













代码解释


第一部分

# =========================================================================================# ====================================== 1. 环境设置 =======================================# =========================================================================================import numpy as npimport pandas as pdimport matplotlib.pyplot as plt

第二部分

# =========================================================================================# ======================================2.颜色库=======================================# =========================================================================================COLOR_SCHEMES = {1: ['#E74C3C', '#3B4A6B', '#1C8C85'],}

第三部分

# =========================================================================================# ======================================3.绘图函数=======================================# =========================================================================================def plot_residual_stacked_histogram(df_real, scheme_id):res_list = [df_real[df_real['Source'] == src]['Residual'].values for src in sources]selected_hex_colors = COLOR_SCHEMES[scheme_id] # 获取配色方案colors_list = selected_hex_colors[:len(sources)] #分配颜色

第四部分

# 创建画布fig, ax = plt.subplots(figsize=(7.2, 6))# 绘制子图编号ax.text(0.85, # x0.9, # y'(a)', # 文本transform=ax.transAxes, # 坐标系fontsize=30, # 字号fontweight='bold', # 加粗va='bottom', # 垂直ha='left') # 水平# 设置刻度标注字体大小for label in ax.get_xticklabels() + ax.get_yticklabels():label.set_fontsize(11)

第五部分

# 绘制直方图n, bins_out, patches = ax.hist(res_list, # 数据bins=bins, # 分箱边界stacked=True, # 堆叠edgecolor='white', # 边缘线色linewidth=0, # 边缘线宽rwidth=0.95) # 宽度# 遍历不同类别for i, container in enumerate(patches):

第六部分

ax.set_xlim(-res_limit, res_limit) # X轴范围ax.set_ylim(0, 95) # Y轴范围# x轴标题ax.set_xlabel(r'Residual ($\mu\epsilon$)', # 文本fontsize=14, # 字体大小fontweight='bold') # 加粗ax.legend(handles=legend_patches + [line_normal], # 句柄loc='upper left', # 位置prop={'size': 11}, # 字体属性edgecolor='gray', # 边框颜色framealpha=1) # 背景透明度

第七部分

# =========================================================================================# ======================================4.执行部分=======================================# =========================================================================================if __name__ == "__main__":df_data = pd.read_excel(r'data.xlsx') # 读取数据scheme_id = 1print(f'正在绘制并保存方案:{scheme_id}')plot_residual_stacked_histogram(df_data, scheme_id)print(f">>> 绘制完成,图片已保存至指定目录。")

如何应用到你自己的数据

1.设置原始数据的保存路径,执行部分:
df_data = pd.read_excel(r'data.xlsx') # 读取数据2.设置是否进行批量绘图,执行部分:
plot_all = True3.设置读取数据,绘图函数部分:
sources = df_real['Source'].unique().tolist()residuals = df_real['Residual'].values # 获取全体数据
4.设置绘图结果的保存地址,绘图函数部分:
plt.savefig(fr'Scheme_{scheme_id}.svg', bbox_inches='tight')
推荐


获取方式
