在X轴上绘制数据与时间的关系图

时间:2013-04-15 07:56:17

标签: 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))

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​​帖子,但无法找到解决我问题的理想方案。

1 个答案:

答案 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)