使用matplotlib绘制pandas系列时更改日期标签

时间:2016-05-10 20:25:08

标签: python pandas matplotlib

我有一个像这样的月度数据的时间序列,并将其绘制成如下:

rng = pd.date_range('1965-01-01', periods=600, freq='M')
ts = pd.Series(np.random.randn(len(rng)), index=rng)
fig, ax = plt.subplots()
ts.plot(ax=ax)

主要的刻度标记是每10年设定一次,从1969年开始。我想改变它,所以它们始于1975年。看了一些matplotlib样本(herehere)后我尝试添加

from matplotlib.dates import YearLocator, DateFormatter
decs = YearLocator(10)   # decades
decsFmt = DateFormatter("%Y")

ax.xaxis.set_major_locator(decs)
ax.xaxis.set_major_formatter(decsFmt)

datemin = pd.datetime(ts.index.min().year, 1, 1)
datemax = pd.date(ts.index.max().year + 1, 1, 1)
ax.set_xlim(datemin, datemax)

但这不起作用。

1 个答案:

答案 0 :(得分:1)

如果要使用matplotlib设置轴限制,则需要关闭pandas的日期格式。

只需将行更改为

即可
ts.plot(x_compat=True, ax=ax)

它应该有效。