Python 在X轴上根据时间绘制数据

Python 在X轴上根据时间绘制数据,python,matplotlib,plot,Python,Matplotlib,Plot,我有一组python列表,我想用matplotlib绘制一个图表,这样时间列表就绘制在x轴上,数据列表就绘制在y轴上 我编写的代码类似于: time =['16:40:48','16:45:48','16:50:48','16:55:48','17:00:48','17:05:48','17:10:48'] data1 = ['702','683','696','666','688','694','699'] fig = plt.figure(figsize=(20.0, 16.0))

我有一组python列表,我想用matplotlib绘制一个图表,这样时间列表就绘制在x轴上,数据列表就绘制在y轴上

我编写的代码类似于:

time =['16:40:48','16:45:48','16:50:48','16:55:48','17:00:48','17:05:48','17:10:48']

data1 = ['702','683','696','666','688','694','699']


fig = plt.figure(figsize=(20.0, 16.0))

ax = fig.add_subplot(1,1,1)

dates = matplotlib.dates.date2num(time)


ax.plot_time(dates,data1)


ax.xaxis.set_major_locator( mdates.MinuteLocator(interval=5) )
ax.xaxis.set_major_formatter( mdates.DateFormatter("%H:%M:%S") )
plt.grid(True)

plt.show()
但这给了我一个错误的说法:

AttributeError:“str”对象没有属性“toordinal”


我已经查阅了一些关于类似问题的帖子,但没有找到解决我问题的理想方法。

从文档中:

matplotlib.dates.date2num(d):
d is either a datetime instance or a sequence of datetimes.
您必须首先将时间字符串转换为日期时间对象。无论如何,你不需要把它们转换成“nums”,只要把它们画出来就行了

要创建日期时间,只需使用列表理解:

datetimes = [datetime.datetime.strptime(t, "%H:%M:%S") for t in time]
然后

ax.plot(datetimes, data1)