Python 在X轴上根据时间绘制数据
我有一组python列表,我想用matplotlib绘制一个图表,这样时间列表就绘制在x轴上,数据列表就绘制在y轴上 我编写的代码类似于: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))
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)