Localisateurs et formatteurs d'étiquettes de dates

PythonPythonBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Ce laboratoire vise à fournir une compréhension de la manière d'utiliser les différents localisateurs et formatteurs d'étiquettes de date dans Matplotlib. Ce tutoriel montre comment utiliser ces fonctions pour personnaliser l'axe des abscisses d'un graphique avec des données temporelles.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Carnet d'adresses pour accéder au carnet Jupyter pour pratiquer.

Parfois, vous devrez peut-être attendre quelques secondes pour que le carnet Jupyter ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations du carnet Jupyter.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous résoudrons rapidement le problème pour vous.

Importation des bibliothèques requises

Nous commençons par importer les bibliothèques nécessaires pour ce tutoriel. Nous utiliserons matplotlib et numpy.

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.dates import (
    FR, MO, MONTHLY, SA, SU, TH, TU, WE, AutoDateFormatter, AutoDateLocator,
    ConciseDateFormatter, DateFormatter, DayLocator, HourLocator,
    MicrosecondLocator, MinuteLocator, MonthLocator, RRuleLocator, SecondLocator,
    WeekdayLocator, YearLocator, rrulewrapper)
import matplotlib.ticker as ticker

Définition des localisateurs et formatteurs

Nous définissons les différents localisateurs et formatteurs que nous allons utiliser. Cet exemple utilise les localisateurs suivants :

  • AutoDateLocator(maxticks=8)
  • YearLocator(month=4)
  • MonthLocator(bymonth=[4, 8, 12])
  • DayLocator(interval=180)
  • WeekdayLocator(byweekday=SU, interval=4)
  • HourLocator(byhour=range(0, 24, 6))
  • MinuteLocator(interval=15)
  • SecondLocator(bysecond=(0, 30))
  • MicrosecondLocator(interval=1000)
  • RRuleLocator(rrulewrapper(freq=MONTHLY, byweekday=(MO, TU, WE, TH, FR), bysetpos=-1))

Et les formatteurs suivants :

  • AutoDateFormatter(ax.xaxis.get_major_locator())
  • ConciseDateFormatter(ax.xaxis.get_major_locator())
  • DateFormatter("%b %Y")
locators = [
    ('AutoDateLocator(maxticks=8)', '2003-02-01', '%Y-%m'),
    ('YearLocator(month=4)', '2003-02-01', '%Y-%m'),
    ('MonthLocator(bymonth=[4, 8, 12])', '2003-02-01', '%Y-%m'),
    ('DayLocator(interval=180)', '2003-02-01', '%Y-%m-%d'),
    ('WeekdayLocator(byweekday=SU, interval=4)', '2000-07-01', '%a %Y-%m-%d'),
    ('HourLocator(byhour=range(0, 24, 6))', '2000-02-04', '%H h'),
    ('MinuteLocator(interval=15)', '2000-02-01 02:00', '%H:%M'),
    ('SecondLocator(bysecond=(0, 30))', '2000-02-01 00:02', '%H:%M:%S'),
    ('MicrosecondLocator(interval=1000)', '2000-02-01 00:00:00.005', '%S.%f'),
    ('RRuleLocator(rrulewrapper(freq=MONTHLY, byweekday=(MO, TU, WE, TH, FR), '
     'bysetpos=-1))', '2000-07-01', '%Y-%m-%d'),
]

formatters = [
    'AutoDateFormatter(ax.xaxis.get_major_locator())',
    'ConciseDateFormatter(ax.xaxis.get_major_locator())',
    'DateFormatter("%b %Y")',
]

Traçage des graphiques

Maintenant, nous pouvons créer nos graphiques. Nous allons créer deux sous-graphiques pour démontrer séparément les localisateurs et les formatteurs. Pour chaque localisateur et formatteur, nous traçons un graphique qui montre comment il affecte l'axe des abscisses. Nous utilisons la fonction plot_axis pour ce faire. Cette fonction définit les paramètres communs pour chaque axe, tels que les épines, les paramètres d'étiquetage et les limites. Elle définit également le localisateur et le formatteur pour l'axe des abscisses.

def plot_axis(ax, locator=None, xmax='2002-02-01', fmt=None, formatter=None):
    ax.spines[['left', 'right', 'top']].set_visible(False)
    ax.yaxis.set_major_locator(ticker.NullLocator())
    ax.tick_params(which='major', width=1.00, length=5)
    ax.tick_params(which='minor', width=0.75, length=2.5)
    ax.set_xlim(np.datetime64('2000-02-01'), np.datetime64(xmax))
    if locator:
        ax.xaxis.set_major_locator(eval(locator))
        ax.xaxis.set_major_formatter(DateFormatter(fmt))
    else:
        ax.xaxis.set_major_formatter(eval(formatter))
    ax.text(0.0, 0.2, locator or formatter, transform=ax.transAxes,
            fontsize=14, fontname='Monospace', color='tab:blue')


fig, axs = plt.subplots(len(locators), 1, figsize=(8, len(locators) *.8),
                        layout='constrained')
fig.suptitle('Date Locators')
for ax, (locator, xmax, fmt) in zip(axs, locators):
    plot_axis(ax, locator, xmax, fmt)

fig, axs = plt.subplots(len(formatters), 1, figsize=(8, len(formatters) *.8),
                        layout='constrained')
fig.suptitle('Date Formatters')
for ax, fmt in zip(axs, formatters):
    plot_axis(ax, formatter=fmt)

Affichage des graphiques

Enfin, nous pouvons afficher les graphiques en utilisant la fonction plt.show().

plt.show()

Sommaire

Dans ce tutoriel, nous avons appris à utiliser les différents localisateurs et formatteurs d'étiquettes de dates dans Matplotlib. Nous avons tracé plusieurs graphiques qui ont démontré comment chaque localisateur et formatteur affecte l'axe des abscisses d'un graphique avec des données temporelles. Cette connaissance peut être utile lors de la création de visualisations de séries temporelles.