如何在matplotlib中绘制datetime.time?

时间:2014-07-15 11:34:57

标签: python matplotlib

我想要显示两个数组:

x : [datetime.time(0, 17, 47, 782000), ...ect
y : [1712, 2002, ...ect

我试图将x转换为matplotlib使用的格式,但它从未写过

x = [matplotlib.dates.date2num(i) for i in x]

但是我收到了这个错误

AttributeError: 'datetime.time' object has no attribute 'toordinal'

我的问题与时间格式有关: 原始信息是这样的:

00:04:49.251

然后我转换它

datetime.datetime.strptime(string, "%H:%M:%S.%f").time()

所以类型是

<type 'datetime.time'>

2 个答案:

答案 0 :(得分:2)

这里的问题是你指定的datetime.time个对象只有一天中的时间信息。正如Emanuele Paolini在评论中指出的那样,matplotlib期望有datetime.datetime个对象除了时间之外还带有日期。

您可以进行转换:

import datetime

my_day = datetime.date(2014, 7, 15)
x_dt = [ datetime.datetime.combine(my_day, t) for t in x ]

现在,您可以将x_dtplot功能一起使用。

这种方法的缺点是你可能会在你的情节上的某个地方得到日期,但是可以通过更改标签设置来解决这个问题。

答案 1 :(得分:1)

我相信你正在使用时间模块,因为它需要一个日期时间对象。

对于错误你可以使用这样的东西,(我99%肯定这应该解决错误) 来自datetime import datetime

dates.append(datetime.strptime(row[5], "%a, %d %b %Y %H:%M:%S %Z"))