当前位置:首页>python>期刊图片复现|Python绘制分组环形柱状图

期刊图片复现|Python绘制分组环形柱状图

  • 2026-10-11 07:50:56
期刊图片复现|Python绘制分组环形柱状图

代码绘制成果展示

论文:MoFo: Empowering Long-term Time Series Forecasting with Periodic Pattern Modeling

论文原图
仿图
多种配色

代码解释

第一部分

库的导入以及字体设置
# =========================================================================================# ====================================== 1. 环境设置 =======================================# =========================================================================================import matplotlib.pyplot as pltimport numpy as npimport matplotlib.patches as mpatches

第二部分

设置颜色库
# =========================================================================================# ======================================2.颜色库=======================================# =========================================================================================COLOR_SCHEMES = {    1: ['#D9B4A7', '#B0C4DE', '#FDEBD0', '#C8E6C9', '#5E4FA2'],}

第三部分

绘图函数:画布创建,基础参数设置
# =========================================================================================# ======================================3.绘图函数=======================================# =========================================================================================def draw_radial_bar_chart(datasets, models, values, colors, scheme_id):    #创建画布    fig, ax = plt.subplots(figsize=(11, 11),subplot_kw=dict(polar=True))    ax.set_theta_offset(np.pi / 2)#起始角度    ax.set_theta_direction(-1)#顺时针    group_angle = (2 * np.pi) / num_groups#分组弧度    bar_width = (group_angle * (1 - group_gap)) / num_bars#柱子弧度

第四部分

绘图函数:遍历并绘制内部柱子与数值文本
        #遍历柱子        for j, val in enumerate(group_vals):            #设置字体动态加粗加大            is_mofo = (j == 4)            fontsize = 24 if is_mofo else 16            fontweight = 'bold' if is_mofo else 'normal'            #文本径向坐标            text_r = inner_radius + bar_height - (0.55 if is_mofo else 0.45)            #柱子数值标注            ax.text(theta,  #角度                    text_r,  #半径                    f'{val:.3f}',  #文本                    zorder=4)  #层

第五部分

绘图函数:绘制分组分界弧线及分组名
        arc_start = group_start_angle#圆心分界弧线的起始弧度        arc_end = group_start_angle + num_bars * bar_width#结束弧度        arc_angles = np.linspace(arc_start, arc_end, 50)#在起始和结束弧度之间均匀生成数据点,用以绘制一条平滑的弧线        ax.text(mid_angle,  #角度                inner_radius - 0.35,  #半径                fontsize=15,  #字体大小                fontweight='bold')  #加粗

第六部分

绘图函数:绘制图例以及绘图结果保存
    handles = [mpatches.Patch(color=colors[i], label=models[i]) for i in range(len(models))]  #创建图例句柄    #绘制图例    legend = ax.legend(handles=handles,  #句柄                       loc='center',  #坐标                       frameon=True,  #边框                       fontsize=13,  #字体大小                       bbox_to_anchor=(0.5, 0.5),  #精确坐标                       edgecolor='lightgrey')  #边框颜色    #设置图例文本    for text in legend.get_texts():        if text.get_text() == 'MoFo (Ours)':            text.set_color('#C00000')            text.set_weight('bold')

第七部分

执行部分
# =========================================================================================# ======================================4.执行部分=======================================# =========================================================================================if __name__ == '__main__':    excel_filename = r"data.xlsx"#原始数据    #设置是否批量绘图    plot_all = True    if plot_all:        for scheme_id in COLOR_SCHEMES.keys():            print('正在绘制并保存方案:', scheme_id)            draw_radial_bar_chart(datasets, models, values, COLOR_SCHEMES[scheme_id], scheme_id)    else:        draw_radial_bar_chart(datasets, models, values, COLOR_SCHEMES[20], 20)

如何应用到你自己的数据

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

excel_filename = r"data.xlsx"#原始数据

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

plot_all = True

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

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

推荐

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

获取方式

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

最新文章

随机文章