matplotlib为什么不识别我在xaxis上的时间戳?

时间:2019-08-05 11:15:47

标签: python datetime matplotlib

现在,我正在尝试通过处理移动幅度最大(最大)的数据集来找出MatplotlibPandas的工作方式。我成功地将完整数据集绘制为以x轴作为时间戳的折线图。

但是,当我试图将设置的间隔绘制为条形图(按小时分组)时,matplotlib不再将xaxis识别为时间戳,因此我无法正确使用格式化程序和定位符(HourLocator等)。

我的数据帧的索引是一个时间戳,但是当我使用.groupby()函数时,它似乎失去了它作为时间戳的属性。

newdf = df[date:(date+forward*deltaday)]
bx = newdf['Movements'].groupby(pd.Grouper( freq='H')).sum().plot.bar()
xtick_locator = mdates.AutoDateLocator()
xtick_formatter = mdates.AutoDateFormatter(xtick_locator) 
bx.xaxis.set_major_locator(xtick_locator)
bx.xaxis.set_major_formatter(xtick_formatter)

运行此代码时,我收到以下错误消息:

  

ValueError:观看次数下限最小值-0.5小于1,并且无效   Matplotlib日期值。如果您经过非日期时间,通常会发生这种情况   具有日期时间单位的轴的值”

这表示我的xaxis不再是datetime对象。当使用xticks提取我的xticks()标签时,我得到以下提示:

Text(0, 0, '2015-02-02 00:00:00') ... Text(47, 0, '2015-02-03 23:00:00')

它看起来像是一个时间戳,但是matplotlib不会将其识别为一个时间戳。没有任何专业知识,我相信.groupby()是强盗。

是否有更好的方法绘制条形图,并在设定的时间间隔内每小时绘制df ['Movements']的总和?

({df['Movements']现在是每分钟的移动次数)

0 个答案:

没有答案