仅在数组中绘制特定日期



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

你应该使用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")

相关内容

  • 没有找到相关文章

最新更新