我有两个要显示的数组:
x : [datetime.time(0, 17, 47, 782000), ...ect
y : [1712, 2002, ...ect
Run Code Online (Sandbox Code Playgroud)
我正在尝试将x转换为matplotlib使用的格式,但它从未尝试过
x = [matplotlib.dates.date2num(i) for i in x]
Run Code Online (Sandbox Code Playgroud)
但是我得到了这个错误
AttributeError: 'datetime.time' object has no attribute 'toordinal'
Run Code Online (Sandbox Code Playgroud)
我的问题与时间格式有关:原始信息是这样的:
00:04:49.251
Run Code Online (Sandbox Code Playgroud)
然后我转换它
datetime.datetime.strptime(string, "%H:%M:%S.%f").time()
Run Code Online (Sandbox Code Playgroud)
所以类型是
<type 'datetime.time'>
Run Code Online (Sandbox Code Playgroud)
这里的问题是您指定的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 ]
Run Code Online (Sandbox Code Playgroud)
现在您可以使用x_dt该plot功能。
这种方法的缺点是您可能会在绘图的某处获得日期,但这可以通过更改标签设置来解决。
我相信您正在使用时间模块,因为它需要一个日期时间对象。
对于错误,你可以使用类似的东西,(我99%确定这应该解决错误)
from datetime import datetime
dates.append(datetime.strptime(row[5], "%a, %d %b %Y %H:%M:%S %Z"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4995 次 |
| 最近记录: |