
代码绘制成果展示

论文: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 16fontweight = '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 = Trueif 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 = True3.设置绘图结果保存地址,绘图函数部分:
plt.savefig(rf'scheme_{scheme_id}.png', dpi=300, bbox_inches='tight')
推荐

获取方式
