Pyplot如何按元素数量限制x轴 适配Facebook Prophet动态绘图需求
实现方法
你完全可以通过数据切片或者动态读取x轴范围的方式实现需求,不需要写死固定时间区间,两种常用方案如下:
- 方案1:绘图前提前截断数据(推荐,性能更好)
Prophet的绘图入参支持传入截断后的预测结果DataFrame,直接取你需要的最近N条或者最近一个月的数据再绘图即可,示例代码:
# 仅保留最近1000条数据绘制 recent_forecast = forecast.tail(1000) fig = model.plot(recent_forecast)
如果要严格匹配最近一个月的动态范围,用时间过滤即可:
from datetime import timedelta # 自动计算当前数据最晚时间往前推30天的节点 cutoff_date = forecast['ds'].max() - timedelta(days=30) recent_forecast = forecast[forecast['ds'] >= cutoff_date] fig = model.plot(recent_forecast)
- 方案2:生成全量图后动态调整x轴范围
如果你已经基于全量数据生成了绘图对象,直接读取预测结果的时间范围设置x轴即可,不需要手动计算时间区间:
# 先生成全量预测图 fig = model.plot(forecast) ax = fig.gca() n = 1000 # 取最近1000条数据的时间区间作为x轴范围 x_start = forecast['ds'].tail(n).iloc[0] x_end = forecast['ds'].tail(n).iloc[-1] ax.set_xlim(x_start, x_end)
两种方案都可以适配动态变动的时间范围,不管你的数据集怎么更新,都会自动展示最新的指定数量或者指定时长的数据。
内容的提问来源于stack exchange,提问作者Sandeepa Kariyawasam
相关产品推荐
相关产品推荐

