2016-02-14 17 views
5

sto tracciando una figura in cui il formato di default si presenta come:Matplotlib manipolazione data in modo che il segno di spunta anno presentarsi ogni 12 mesi

Year tick shows up every 12 months, but months show only every 3 months

vorrei modificarlo in modo che il mese zecche presentarsi ogni 1 mese ma mantenere l'anno. Il mio tentativo attuale è questa:

years = mdates.YearLocator() 
months = mdates.MonthLocator() 
monthsFmt = mdates.DateFormatter('%b-%y') 
dts = s.index.to_pydatetime() 

fig = plt.figure(); ax = fig.add_subplot(111) 
ax.plot(dts, s) 
ax.xaxis.set_major_locator(months) 
ax.xaxis.set_major_formatter(monthsFmt) 

ma non sta producendo il risultato giusto:

Not right

Esattamente come ho bisogno di modificarlo in modo che si presenta come la prima, ma con i mesi le zecche compaiono ogni mese?

risposta

7

Calcolato una soluzione, che consiste nel mantenere mesi nelle zecche minori e mantenere gli anni come maggiore.

E.g.

years = mdates.YearLocator() 
months = mdates.MonthLocator() 
monthsFmt = mdates.DateFormatter('%b') 
yearsFmt = mdates.DateFormatter('\n\n%Y') # add some space for the year label 
dts = s.index.to_pydatetime() 

fig = plt.figure(); ax = fig.add_subplot(111) 
ax.plot(dts, s) 
ax.xaxis.set_minor_locator(months) 
ax.xaxis.set_minor_formatter(monthsFmt) 
plt.setp(ax.xaxis.get_minorticklabels(), rotation=90) 
ax.xaxis.set_major_locator(years) 
ax.xaxis.set_major_formatter(yearsFmt) 

Risultati in: enter image description here

Problemi correlati