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”

我已经查看了有关类似问题的 somne​​ 帖子,但找不到我的问题所需的解决方案。

4

1 回答 1

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)
于 2013-04-15T08:09:01.047 回答