用时间轴绘图(Python)

时间:2015-08-27 11:55:18

标签: python python-2.7 numpy matplotlib plot

我再遇到一个问题,这让我头疼了几个小时......而且我很确定这只是一个小问题。

我有一个长数据文件,并创建了一个包含标题名称及其类型的列表:

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个图中显示它与相应的日期。

1 个答案:

答案 0 :(得分:2)

pylab.plot(dt, XXX)中,您尝试将导入的datetime模块本身映射到值列表中,这不是您想要的。

相反,您需要类似pylab.plot(times, XXX)的内容,其中times应该是包含与列表datetime对应的XXX个对象的列表。

您收到的错误消息指出您传递给plot函数的2个参数应该是相同长度的列表。

有关详细信息,请参阅Plotting time in Python with Matplotlib,包括格式化x轴标签。