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

时间:2015-02-25 13:11:12

标签: python datetime matplotlib

嗨我有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轴间隔设置为几个月,那么我绘制的日期可以插入正确的月份?

1 个答案:

答案 0 :(得分: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()