美文网首页
记matplotlib的x时间轴绘图

记matplotlib的x时间轴绘图

作者: dc的梦呓 | 来源:发表于2020-04-28 22:05 被阅读0次

    遇到一个项目的matplotlib的绘图需求,其中的x时间轴花了好些时间才完成,记录一下。

    需求:
    7天的数据,一天24个,每个1时;
    x 时间轴只显示小时:0、12时;
    当0时,需显示在其下方显示日期;

    以下为实现示例代码:

    import matplotlib.pyplot as plt
    import matplotlib.dates as mdates
    import datetime
    from datetime import timedelta
    from random import randrange
    
    ax = plt.gca()  #当前画布
    #构造测试数据
    dt_start = datetime.datetime(2008,1,1,1)
    x_datetimes = [dt_start+timedelte(hours=i) for i in range(0,169)]
    y_values = [randrange(20) for i in range(0,169)]
    #若不设置时间轴,直接绘制显示:
    ax.plot(x_datetimes,y_values)
    plt.show()
    

    若不设置时间轴直接显示,matplotlib 会有默认的显示方式(根据数据),只显示日期,还会重叠在一起,效果不好,因此需根据需求定制x轴的显示格式。


    image.png

    以下为设置代码:

    ax = plt.gca()
    #设置时间轴显示格式
    hour_locator = mdates.HourLocator((0,12,))  #只显示0、12时
    ax.xaxis.set_major_locator(hour_locator)
    formatter = mdates.ConciseDateFormatter(hour_locator,show_offset=False) #显示格式
    formatter.formats[3]='%H'
    formatter.zero_formats = ['']+formatter.formats[:-1]
    #0时,分行显示日期
    formatter.zero_formats[3] = '%H\n%m/%d'  
    ax.xaxis.set_major_formatter(formatter)
    #绘制
    ax.plot(x_datetimes,y_values)
    plt.show()
    

    效果图如下:


    image.png

    更多详细用法可参考matplotlib官方文档

    相关文章

      网友评论

          本文标题:记matplotlib的x时间轴绘图

          本文链接:https://www.haomeiwen.com/subject/cmkiwhtx.html