我有一组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'
我已经查看了关于类似问题的somne帖子,但无法找到解决我问题的理想方案。
答案 0 :(得分:0)
来自文档:
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)