【问题标题】:Date versus time interval plotting in MatplotlibMatplotlib 中的日期和时间间隔绘图
【发布时间】:2011-01-13 12:58:45
【问题描述】:

pyplot plot_date 函数需要成对的日期和值以某种线条样式绘制。是否有推荐的方法来根据日期/时间值绘制多个值或区间数据?

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    要绘制区间数据,您可以使用 errorbar() 函数提供的误差条,并使用 axis.xaxis_date() 使 matplotlib 像这样格式化轴plot_date() 函数。

    这是一个例子:

    #!/usr/bin/python
    
    import datetime
    import numpy as np
    import matplotlib.dates as mdates
    import matplotlib.pyplot as plt
    
    # dates for xaxis
    event_date = [datetime.datetime(2008, 12, 3), datetime.datetime(2009, 1, 5), datetime.datetime(2009, 2, 3)]
    
    # base date for yaxis can be anything, since information is in the time
    anydate = datetime.date(2001,1,1)
    
    # event times
    event_start = [datetime.time(20, 12), datetime.time(12, 15), datetime.time(8, 1,)]
    event_finish = [datetime.time(23, 56), datetime.time(16, 5), datetime.time(18, 34)]
    
    # translate times and dates lists into matplotlib date format numpy arrays
    start = np.fromiter((mdates.date2num(datetime.datetime.combine(anydate, event)) for event in event_start), dtype = 'float', count = len(event_start))
    finish = np.fromiter((mdates.date2num(datetime.datetime.combine(anydate, event)) for event in event_finish), dtype = 'float', count = len(event_finish))
    date = mdates.date2num(event_date)
    
    # calculate events durations
    duration = finish - start
    
    fig = plt.figure()
    ax = fig.add_subplot(1, 1, 1)
    
    # use errorbar to represent event duration
    ax.errorbar(date, start, [np.zeros(len(duration)), duration], linestyle = '')
    # make matplotlib treat both axis as times
    ax.xaxis_date()
    ax.yaxis_date()
    
    plt.show()
    

    【讨论】:

      猜你喜欢
      • 2015-12-23
      • 1970-01-01
      • 2020-12-29
      • 2020-04-07
      • 2019-05-14
      • 2019-12-14
      • 1970-01-01
      • 2019-12-19
      • 2021-12-29
      相关资源
      最近更新 更多