Étiquettes de coche de date #

Le traçage de la date Matplotlib est effectué en convertissant les instances de date en jours depuis une époque (par défaut 1970-01-01T00:00:00). Le matplotlib.datesmodule fournit les fonctions de conversion date2num et num2datequi convertissent datetime.datetimeles numpy.datetime64 objets vers et depuis la représentation interne de Matplotlib. Ces types de données sont enregistrés avec le mécanisme de conversion d'unités décrit dans matplotlib.units, de sorte que la conversion se produit automatiquement pour l'utilisateur. Le processus d'enregistrement définit également la coche par défaut locatoret formatterpour que l'axe soit AutoDateLocatoret AutoDateFormatter.

Un formateur alternatif est le ConciseDateFormatter, utilisé dans la seconde Axesci-dessous (voir Formater les graduations de date à l'aide de ConciseDateFormatter ), qui supprime souvent le besoin de faire pivoter les étiquettes de graduation. Le dernier Axesformate les dates manuellement, en utilisant DateFormatterpour formater les dates en utilisant les chaînes de format documentées à 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()

Durée totale d'exécution du script : (0 minutes 1,408 secondes)

Galerie générée par Sphinx-Gallery