我想要显示两个数组:
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'>
答案 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_dt
与plot
功能一起使用。
这种方法的缺点是你可能会在你的情节上的某个地方得到日期,但是可以通过更改标签设置来解决这个问题。
答案 1 :(得分:1)
我相信你正在使用时间模块,因为它需要一个日期时间对象。
对于错误你可以使用这样的东西,(我99%肯定这应该解决错误) 来自datetime import datetime
dates.append(datetime.strptime(row[5], "%a, %d %b %Y %H:%M:%S %Z"))