首页 > 解决方案 > 在 Y 轴上将 matplotlib 时间显示为 HH:MM

问题描述

我有一个包含时间和日期信息的日期时间事件列表。该列表包括相同的日期,只有时间从一个列表项更改为下一项。

我想显示一个散点图,其中 X 轴上的日期和 Y 轴上的时间。我可以通过从日期时间列表中提取日期数据来获取 X 轴,如下所示:

x = [e.date() for e in events]

但是,我不能对时间数据做同样的事情:

# Results in TypeError:
# float() argument must be a string or a number, not 'datetime.time'
y = [e.time() for e in events]

在阅读SO 上的这个答案后,我可以通过执行以下操作来获得我需要的视觉结果:

import matplotlib.dates as mdates
y = [mdates.date2num(e) % 1 for e in events]

但是,这会将 Y 轴上的标签显示为它们在 date2num 转换后的浮点数,从 0.0 到 1.0。

我该怎么做才能将标签显示为 00:00 到 23:59,希望具有可配置的滴答频率(例如每小时,每 4 小时)。我无法在上面的 SO 链接中重现结果。

谢谢你。

标签: pythonmatplotlib

解决方案


您可以按照本文中解释的程序进行操作

另外在 y 轴上有时间:

plt.scatter(y,x)

推荐阅读