仅绘制数组中的某些日期

时间:2016-08-19 12:04:03

标签: date datetime matplotlib plot

我是python编程的新手,并且一直试图将日期数字组合在一起。唯一的问题是,当我单独进行绘图时,它似乎会在我的日期范围内显示每一个日期。因此,x轴完全难以辨认。有没有办法保留我的所有数据点,但x轴只显示月份或类似的东西?

包含一些示例数据的代码如下:

import datetime as dt
import matplotlib.dates as mdates
import matplotlib.pyplot as plt
dates=['1/08/2015', '2/08/2015', '1/09/2015', '2/09/2015', '3/09/2015','4/09/2015', '5/09/2015', '1/10/2015', '2/11/2015', '3/11/2015', '4/11/2015', '5/11/2015', '1/12/2015', '2/12/2015', '1/01/2016', '2/01/2016', '3/01/2016', '1/02/2016', '2/02/2016', '3/02/2016', '4/02/2016', '1/03/2016', '6/03/2016', '1/04/2016', '2/05/2016', '1/06/2016', '1/07/2016', '2/07/2016', '3/07/2016', '4/07/2016', '5/07/2016', '1/08/2016', '2/08/2016', '3/08/2016'] 
converteddates= [dt.datetime.strptime(d, '%d/%m/%Y').date() for d in dates]
data=range(len(converteddates))
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%d/%m/%Y'))
plt.gca().xaxis.set_major_locator(mdates.DayLocator())
plt.plot(converteddates,data)
plt.gcf().autofmt_xdate()
plt.show()

1 个答案:

答案 0 :(得分:0)

你应该使用MonthLocator(DayLocator的工作就是每天都打勾):

plt.gca().xaxis.set_major_locator(mdates.MonthLocator())
plt.plot(converteddates,data)
plt.gcf().autofmt_xdate()

但更好的方法可能是:

fig, ax = plt.subplots()
ax.plot_date(converteddates, data)

如果它仍然不喜欢你的日期,那么设置下面的刻度和标签:

ax.set_xticks(converteddates)
strdates = [d.strftime("%d/%m/%Y") for d in converteddates]
ax.set_xticklabels(strdates, rotation="45")