我正在尝试使用axvline函数绘制datetime.time值,但看到了这个错误。请帮忙。
这是代码:
import datetime as dt
from datetime import datetime
import matplotlib.pyplot as plt
i='wpt'
x = [datetime.time(12,10), datetime.time(12, 15)]
fig, axs = plt.subplots(3, sharex = True, figsize = (12,9), constrained_layout = True)
axs[i].axvline(x[0], color = 'lightskyblue', ls = '--', lw = 1)
当我运行代码时,我得到以下错误
TypeError: '>' not supported between instances of 'float' and 'datetime.time'
我在线检查,没有发现使用带datetime.time
的axvline的解决方案
matplotlib需要一个数字x坐标,而不是日期时间对象。您需要将时间转换为数字,例如使用matplotlib.dates.date2num函数:
import matplotlib.dates as mdates
axs[i].axvline(mdates.date2num(datetime.combine(date.today(), x[0])), ...)
这将把时间转换为一个浮点数,表示自0001年1月1日以来的天数。然后,Matplotlib将使用其日期打印机制来适当地格式化轴。请注意,我在这里使用了datetime.combine,通过添加今天的日期将时间转换为完整的datetime对象。