【问题标题】:When dates are on the x axis, how do i set the x axis intervals to months?当日期在 x 轴上时,如何将 x 轴间隔设置为月?
【发布时间】:2015-02-25 13:11:11
【问题描述】:

嗨,我有 2 个数组,它们位于:

array1 = [datetime.date(2014, 3, 3), datetime.date(2014, 2, 19), datetime.date(2014, 7, 13), datetime.date(2014, 5, 11), datetime.date(2014, 6, 13), datetime.date(2014, 1, 20)]

array2 = 1,5,8,9,4,6

这是我必须绘制 2 个数组的代码:

plt.plot_date((aray1), (array2), 'ro')
plt.xticks(rotation=45)
plt.xlabel('Date', fontsize=12)
plt.ylabel('Quantity', fontsize=12)
plt.savefig('plot4.png')  

我的数组比上面的要大很多,所以我的日期被挤在一起,不适合 x 轴。那么,如何将 x 轴间隔设置为月份,以便我绘制的日期可以插入正确的月份?

【问题讨论】:

    标签: python datetime matplotlib


    【解决方案1】:

    不过,您提供的数据集并没有重现问题:您正在寻找的是应用于您的数据的 matplotlib example 的确切用例。

    import numpy
    from datetime import datetime
    from matplotlib import pyplot as plt
    from matplotlib.dates import DateFormatter, MonthLocator
    
    t = numpy.array([datetime(2014, 3, 3),
                     datetime(2014, 2, 19),
                     datetime(2014, 7, 13),
                     datetime(2014, 5, 11),
                     datetime(2014, 6, 13),
                     datetime(2014, 1, 20)])
    
    values = numpy.array([1, 5, 8, 9, 4, 6])
    
    fig, ax = plt.subplots()
    ax.plot_date(t, values, 'ro')
    plt.xticks(rotation=45)
    plt.xlabel('Date', fontsize=12)
    plt.ylabel('Quantity', fontsize=12)
    
    months = MonthLocator()
    monthsFmt = DateFormatter("%b '%y")
    ax.xaxis.set_major_locator(months)
    ax.xaxis.set_major_formatter(monthsFmt)
    plt.show()
    

    【讨论】:

    • 非常感谢。如果我硬编码我的日期数组,它就可以工作。但是因为我的数组是格式 datetime.date 而不仅仅是 datetime,所以它不起作用。我怎样才能避免这种情况?
    • 我正在使用此代码转换我的日期 array1 = [dt.datetime.strptime(a,'%Y-%m-%d').date() for a in array1]跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-25
    • 2015-07-13
    • 1970-01-01
    • 2022-11-11
    • 2015-05-11
    • 2019-12-19
    • 1970-01-01
    相关资源
    最近更新 更多