Nota
Fare clic qui per scaricare il codice di esempio completo
Etichette di spunta della data #
Il tracciamento della data di Matplotlib viene eseguito convertendo le istanze di data in giorni da un'epoca (per impostazione predefinita 1970-01-01T00:00:00). Il
matplotlib.datesmodulo fornisce le funzioni del convertitore date2num
e num2dateche convertono datetime.datetimee numpy.datetime64
oggetti da e verso la rappresentazione interna di Matplotlib. Questi tipi di dati sono registrati con il meccanismo di conversione delle unità descritto in
matplotlib.units, quindi la conversione avviene automaticamente per l'utente. Il processo di registrazione imposta anche il segno di spunta predefinito locatore
formatterper l'asse come AutoDateLocatore
AutoDateFormatter.
Un formattatore alternativo è il ConciseDateFormatter, utilizzato nel secondo di Axesseguito (vedere
Formattazione dei segni di spunta della data utilizzando ConciseDateFormatter ), che spesso elimina la necessità di ruotare le etichette dei segni di spunta. L'ultimo Axesformatta le date manualmente, utilizzando
DateFormatterper formattare le date utilizzando le stringhe di formato documentate in datetime.date.strftime.

import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import matplotlib.cbook as cbook
# Load a numpy record array from yahoo csv data with fields date, open, high,
# low, close, volume, adj_close from the mpl-data/sample_data directory. The
# record array stores the date as an np.datetime64 with a day unit ('D') in
# the date column.
data = cbook.get_sample_data('goog.npz', np_load=True)['price_data']
fig, axs = plt.subplots(3, 1, figsize=(6.4, 7), constrained_layout=True)
# common to all three:
for ax in axs:
ax.plot('date', 'adj_close', data=data)
# Major ticks every half year, minor ticks every month,
ax.xaxis.set_major_locator(mdates.MonthLocator(bymonth=(1, 7)))
ax.xaxis.set_minor_locator(mdates.MonthLocator())
ax.grid(True)
ax.set_ylabel(r'Price [\$]')
# different formats:
ax = axs[0]
ax.set_title('DefaultFormatter', loc='left', y=0.85, x=0.02, fontsize='medium')
ax = axs[1]
ax.set_title('ConciseFormatter', loc='left', y=0.85, x=0.02, fontsize='medium')
ax.xaxis.set_major_formatter(
mdates.ConciseDateFormatter(ax.xaxis.get_major_locator()))
ax = axs[2]
ax.set_title('Manual DateFormatter', loc='left', y=0.85, x=0.02,
fontsize='medium')
# Text in the x axis will be displayed in 'YYYY-mm' format.
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%b'))
# Rotates and right-aligns the x labels so they don't crowd each other.
for label in ax.get_xticklabels(which='major'):
label.set(rotation=30, horizontalalignment='right')
plt.show()
Tempo di esecuzione totale dello script: (0 minuti 1,408 secondi)