【问题标题】:Plotting with time axis (Python)用时间轴绘图(Python)
【发布时间】:2015-09-12 19:57:31
【问题描述】:

我又遇到了一个问题,这已经让我头痛了几个小时……我很确定这只是一件小事。

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

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 个绘图中与其对应的日期进行可视化。

【问题讨论】:

    标签: python python-2.7 numpy matplotlib plot


    【解决方案1】:

    pylab.plot(dt, XXX) 中,您尝试将导入的datetime 模块本身与值列表进行对比,这不是您想要的。

    相反,您想要pylab.plot(times, XXX) 之类的东西,其中times 应该是一个列表,其中包含与列表XXX 对应的datetime 对象。

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

    请参阅Plotting time in Python with Matplotlib 了解更多信息,包括格式化 x 轴标签。

    【讨论】:

    • 抱歉造成混淆...XXX 和 YYY 是两种不同类型的数据,我想在同一个图中可视化但具有相同的时间范围(来自 TIMESTAMP)!所以我想绘制 XXX 和 YYY 与其对应的日期。
    • 已编辑以扩展我的解释并通过您的澄清更正我的答案。如果您需要更多解释,请告诉我。
    • 天哪……我所需要的就是那个小小的date2num 函数……我花了一整天的时间才弄明白。现在一切正常,谢谢!
    猜你喜欢
    • 2020-09-18
    • 2016-02-01
    • 2014-05-31
    • 1970-01-01
    • 2017-03-30
    • 2017-01-01
    • 2019-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多