2016-08-19 68 views
0

我是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() 

回答

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")