使用datetime.time和axvline绘制一条垂直线



我正在尝试使用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对象。

最新更新