我再遇到一个问题,这让我头疼了几个小时......而且我很确定这只是一个小问题。
我有一个长数据文件,并创建了一个包含标题名称及其类型的列表:
col_headers = [('TIMESTAMP','|S21'),('XXX_1','<i8'),('YYY_2','<i8')
之后我创建了一个包含选项的字典变量,最后用
导入它bladata = scipy.genfromtxt(datafile, **kwargs)
用于提取我使用的时间信息
import datetime as dt
for i in range (0,len(bladata['TIMESTAMP']),1):
datestring = bladata['TIMESTAMP'][i]
#create a datetime object holding dates and times
d = dt.datetime.strptime(datestring, '"%Y-%m-%d %H:%M:%S"')
最后,我使用
将数据分配给变量XXX = bladata['XXX_1']
YYY = bladata['YYY_2']
(顺便说一下,当我的数据文件中的标题名称不是XXX_1而是XXX(1)时,我收到错误消息“未找到名为XXX(1)的字段” - 我该如何解决此问题?)
现在谈到绘图时,我收到错误消息
x and y must have same first dimension
使用以下代码时
pylab.plot(dt, XXX)
pylab.plot(dt, YYY)
pylab.xlim(d.datetime(2014, 01, 10), d.datetime(2014, 06, 10))
我搜索了该错误消息并找到了一个建议将列表转换为numpy数组的解决方案......但是在哪里和哪个?我很确定这根本不是什么大问题,但我几个小时都搞不清楚......所以我很高兴有任何有用的回复。
€dit:澄清...... XXX和YYY是2个不同的测量值,我想在1个图中显示它与相应的日期。
答案 0 :(得分:2)
在pylab.plot(dt, XXX)
中,您尝试将导入的datetime
模块本身映射到值列表中,这不是您想要的。
相反,您需要类似pylab.plot(times, XXX)
的内容,其中times
应该是包含与列表datetime
对应的XXX
个对象的列表。
您收到的错误消息指出您传递给plot
函数的2个参数应该是相同长度的列表。
有关详细信息,请参阅Plotting time in Python with Matplotlib,包括格式化x轴标签。