Python 当日期在x轴上时,如何将x轴间隔设置为月?

Python 当日期在x轴上时,如何将x轴间隔设置为月?,python,datetime,matplotlib,Python,Datetime,Matplotlib,嗨,我有两个阵列,它们位于以下几行: 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((a

嗨,我有两个阵列,它们位于以下几行:

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轴间隔设置为月,以便im绘制的日期可以插入正确的月份?

好吧,您提供的数据集不会重现问题,不过:您要查找的是应用于数据的正确用例

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.strtime(a),%Y-%m-%d').date(),用于array1中的a]