我正在使用matplotlib绘制从CSV文件导入的一些数据。这些文件的格式如下:Python日期时间在美国和英国日期格式之间切换
Date,Time,A,B
25/07/2016,13:04:31,5,25550
25/07/2016,13:05:01,0,25568
....
01/08/2016,19:06:43,0,68425
的日期格式,因为它们是在英国,即%d/%m/%Y
。最终结果是有两个图:A
如何随时间变化,以及B
如何随时间变化。我正在从CSV导入数据,如下所示:
import matplotlib
matplotlib.use('Agg')
from matplotlib.mlab import csv2rec
import matplotlib.pyplot as plt
from datetime import datetime
import sys
...
def analyze_log(file, y):
data = csv2rec(open(file, 'rb'))
fig = plt.figure()
date_vec = [datetime.strptime(str(x), '%Y-%m-%d').date() for x in data['date']]
print date_vec[0]
print date_vec[len(date_vec)-1]
time_vec = [datetime.strptime(str(x), '%Y-%m-%d %X').time() for x in data['time']]
print time_vec[0]
print time_vec[len(time_vec)-1]
datetime_vec = [datetime.combine(d, t) for d, t in zip(date_vec, time_vec)]
print datetime_vec[0]
print datetime_vec[len(datetime_vec)-1]
y_vec = data[y]
plt.plot(datetime_vec, y_vec)
...
# formatters, axis headers, etc.
...
return plt
而且在8月1日之前一切正常。然而,从那以后,matplotlib试图将我的01/08/2016数据点绘制为2016-01-08(1月08日)!
我得到一个绘图错误,因为它试图绘制1至7月:
RuntimeError: RRuleLocator estimated to generate 4879 ticks from 2016-01-08 09:11:00+00:00 to 2016-07-29 16:22:34+00:00:
超过Locator.MAXTICKS * 2(2000)
我在做什么错在这里?在上面的代码中的打印语句的结果是:
2016-07-25
2016-01-08 #!!!!
13:04:31
19:06:43
2016-07-25 13:04:31
2016-01-08 19:06:43 #!!!!
你在'strptime'使用''%Y-%间%D''..:该函数有两个选项来影响解析,
dayfirst
应该帮助吗? – Phillip@Phillip当我在格式中输入'%d /%m /%Y'时,出现错误:'ValueError:time data'2016-07-25'与格式'%d /%m /%Y'不匹配' ' – Frangipanes
@Frangipanes:你的输入是使用混合格式吗? –