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.

DefaultFormatter, ConciseFormatter, Manual DateFormatter
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)

Galleria generata da Sphinx-Gallery