[matplotlib]:在x轴上写日期

时间:2017-04-15 12:05:53

标签: python matplotlib

这里是一个示例代码,我想在x轴上绘制整个日期

import datetime
import matplotlib.pyplot as plt
import random
import numpy as np
from matplotlib.dates import DateFormatter

years = np.arange( 2005, 2016, 1)
years[1] = 2005
years[2] = 2005
months = [ 3, 2, 1, 5, 7, 12, 2, 3, 5, 2, 6]
dates = []
for Y in years:
    dates = dates + [ datetime.datetime(Y, 6 , 4) ]


y = np.random.randn(len(dates))

fig, ax = plt.subplots()

ax.plot_date(dates, y, 'r+', ms = 2, mew = 12)

ax.fmt_xdata = DateFormatter('%y-%m-%d')
fig.autofmt_xdate()

plt.show()

不幸的是,结果就是这样 enter image description here

我需要的是在x轴上写下所有日期,如图所示

enter image description here

您建议我更改我的代码?

1 个答案:

答案 0 :(得分:1)

ax.fmt_xdata是日期的格式化程序,通常仅用于交互式图中的悬停功能。 enter image description here

您想要的是将xaxis的主格式化程序设置为DateFormatter

ax.xaxis.set_major_formatter(DateFormatter('%b-%d-%Y'))

enter image description here