2016-05-10 7 views
1

Plotten habe ich eine Zeitreihe von monatlichen Daten wie diese, und es so zeichnen:ändern Datum Etiketten, wenn Pandas Serie mit 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) 

Die großen Markierungen alle 10 Jahre festgelegt sind, im Jahr 1969 beginnen. ich möchte, dies ändern, so dass sie im Jahr 1975. nach einem Blick auf einigen matplotlib Proben (here und here) startet versuchte ich

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) 

Zugabe, aber das funktioniert nicht.

Antwort

1

Wenn Sie matplotlib zum Einstellen der Achsenlimits verwenden möchten, müssen Sie die Datumsformatierung der Pandas deaktivieren.

Ändern Sie einfach die Linie zu

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

und es sollte funktionieren.