python - 如何使用 Prophet 绘图功能在 x 轴上显示小时数
问题描述
在我的 Prophet 预测图中使用更精细的时间序列时,我需要一些帮助,特别是 x 轴上的小时粒度。
我的数据按一天中的每个小时汇总。除了聚合数据之外,我还创建了必要的 Prophet 变量:
ads_mod['y'] = ads_mod[target1]
ads_mod['ds'] = ads_mod['hour']
然后我开始建模过程:
m = Prophet(interval_width=interval_width)
m.add_seasonality(name='hourly', period=1, fourier_order=30)
m.fit(ads_mod)
future = m.make_future_dataframe(periods=1,freq='H')
forecast = m.predict(future)
我用以下方法绘制预测:
fig = m.plot(forecast)
我已经查看了绘图函数中的实际代码,并尝试了各种修改以在 x 轴上显示小时和日期(即日期时间值),但没有成功。特别是,我查看了日期转换:
fcst_t = fcst['ds'].dt.to_pydatetime()
转换后,我看到我的数据现在采用以下格式,其中仍包含小时。下面是该图的一个片段,您可以看到在 x 轴上,日期(即 YYYY、MM、DD)是唯一显示的值:
fcst_t[:10]
Out[277]:
array([datetime.datetime(2019, 12, 2, 0, 0),
datetime.datetime(2019, 12, 2, 1, 0),
datetime.datetime(2019, 12, 2, 2, 0),
datetime.datetime(2019, 12, 2, 3, 0),
datetime.datetime(2019, 12, 2, 4, 0),
datetime.datetime(2019, 12, 2, 5, 0),
datetime.datetime(2019, 12, 2, 6, 0),
datetime.datetime(2019, 12, 2, 7, 0),
datetime.datetime(2019, 12, 2, 8, 0),
datetime.datetime(2019, 12, 2, 9, 0)], dtype=object)
解决方案
import matplotlib.dates as mdates
....这里有额外的情节代码......
hours = mdates.HourLocator(interval = 1)
h_fmt = mdates.DateFormatter('%Y-%m-%d %H:%M:%S')
ax.xaxis.set_major_locator(hours)
ax.xaxis.set_major_formatter(h_fmt)
推荐阅读
- python - 使用正则表达式 python 提取字符串
- javascript - Promise.all 中的多个文件读取不起作用
- c# - C#:如何使用 IReadOnly 字典实现接口,该字典包含来自包含具体值的具体字典中的接口值
- android - BottomNavigationView 双击
- javascript - How do you add a Fontawesome icon to a button in a JavaScript function
- python - 为什么 Python 3.8 将像 "\x48" 这样的字符串解释为 "H"。我想把它写成字符串中的“\x48”
- rust - 25519-dalek 的主要补充?
- pyspark - 在 pyspark 中聚合 Kolmogrov Smirnov 测试
- ssl - 用作 https 的反向代理时,nginx 行为缓慢
- html - 如何根据父容器内的可用空间在我的元素之间分配相同的高度?(我需要动态解决方案)