Facebook Prophet时间序列图如何调整yerr的颜色与透明度
调整Prophet预测图置信区间颜色与透明度的实现
现存代码的问题
- 你当前代码中传入的
yerr=17是固定值误差,并非Prophet模型计算的动态置信区间。Prophet返回的forecast数据帧中,已经预先存储了每个时间点对应的置信上下界yhat_lower、yhat_upper,用固定值误差不仅预测结果不准确,也无法灵活控制误差填充区域的视觉属性。 - pandas自带的
plot()方法对误差区域的自定义支持非常有限,要调整误差带的颜色、透明度,建议使用matplotlib原生API实现,可配置项更全。
正式出图的推荐实现
下面的代码完全对齐你原有的坐标范围、线色设置,同时可以自由调整置信带的视觉效果:
import matplotlib.pyplot as plt # 初始化画布尺寸 fig, ax = plt.subplots(figsize=(12, 8)) # 绘制历史观测值,匹配你原有pro_la.plot的散点效果 ax.plot(pro_la['ds'], pro_la['y'], 'k.', label='历史观测值') # 绘制预测均值的绿色主线 ax.plot( forecast_low['ds'], forecast_low['yhat'], color='green', label='预测值yhat' ) # 绘制可自定义属性的置信区间填充带 ax.fill_between( x=forecast_low['ds'], y1=forecast_low['yhat_lower'], y2=forecast_low['yhat_upper'], color='green', alpha=0.2, # 透明度取值范围0-1,按需调整数值 label='95%置信区间' ) # 沿用你设置的坐标范围 ax.set_xlim('2020-01-01', '2021-04-30') ax.set_ylim(0, 275) # 优化展示 ax.legend() plt.tight_layout() plt.show()
临时快速调整的方案
如果不想替换原有绘图逻辑,只想在现有输出基础上调整置信带效果,可以在原有绘图代码后追加属性修改逻辑:
# 运行你原有的绘图代码 ax = pro_la.plot(x ='ds', y='y',figsize = (12,8)) ax =forecast_low.plot(x='ds',y='yhat',color = 'green', yerr = 17, xlim=('2020-01-01','2021-04-30'), ylim = (0,275),figsize = (12,8), ax=ax) # 遍历Axes对象中的填充元素,调整视觉属性 for patch in ax.patches: patch.set_alpha(0.3) # 修改透明度 patch.set_facecolor('#80d880') # 修改填充色为柔和浅绿
注意:这个临时方案依旧保留了原有代码使用固定误差值的缺陷,生成的误差带不是模型真实的动态置信区间,仅适合临时预览效果。
内容的提问来源于stack exchange,提问作者Josh Ortega
相关产品推荐
相关产品推荐

