Tutoriel sur les formatteurs d'étiquettes de Matplotlib

Beginner

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

Introduction

Matplotlib est une bibliothèque de traçage Python largement utilisée qui produit des graphiques 2D et 3D de haute qualité. Dans ce laboratoire, nous allons apprendre à utiliser les formatteurs d'étiquettes dans Matplotlib.

Conseils sur la machine virtuelle

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

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 de Matplotlib et configuration du tracé

Tout d'abord, nous devons importer la bibliothèque Matplotlib et configurer le tracé. Nous allons créer un tracé vide avec un axe y et un axe x. Nous allons également configurer l'axe pour ne montrer que la ligne inférieure, définir les positions des étiquettes et définir la longueur des étiquettes.

import matplotlib.pyplot as plt
from matplotlib import ticker

def setup(ax, title):
    """Configure les paramètres communs pour les Axes dans l'exemple."""
    ## ne montrer que la ligne inférieure
    ax.yaxis.set_major_locator(ticker.NullLocator())
    ax.spines[['left', 'right', 'top']].set_visible(False)

    ## définir les positions des étiquettes
    ax.xaxis.set_major_locator(ticker.MultipleLocator(1.00))
    ax.xaxis.set_minor_locator(ticker.MultipleLocator(0.25))

    ax.xaxis.set_ticks_position('bottom')
    ax.tick_params(which='major', width=1.00, length=5)
    ax.tick_params(which='minor', width=0.75, length=2.5, labelsize=10)
    ax.set_xlim(0, 5)
    ax.set_ylim(0, 1)
    ax.text(0.0, 0.2, title, transform=ax.transAxes,
            fontsize=14, fontname='Monospace', color='tab:blue')


fig, ax = plt.subplots(figsize=(8, 2))
setup(ax, "Formatteurs d'étiquettes")

Formatage simple

Dans cette étape, nous allons montrer comment utiliser un formatteur simple en passant une chaîne de caractères ou une fonction à ~.Axis.set_major_formatter ou ~.Axis.set_minor_formatter. Nous allons créer deux tracés, l'un utilisant un formatteur de chaîne de caractères et l'autre un formatteur de fonction.

fig0, axs0 = plt.subplots(2, 1, figsize=(8, 2))
fig0.suptitle('Formatage simple')

## Une chaîne de caractères (`str`), en utilisant la syntaxe de la fonction de chaîne de formatage, peut être utilisée directement comme formatteur.
## La variable `x` est la valeur de l'étiquette et la variable `pos` est la position de l'étiquette.
## Cela crée automatiquement un StrMethodFormatter.
setup(axs0[0], titre="'{x} km'")
axs0[0].xaxis.set_major_formatter('{x} km')

## Une fonction peut également être utilisée directement comme formatteur.
## La fonction doit prendre deux arguments : `x` pour la valeur de l'étiquette et `pos` pour la position de l'étiquette,
## et doit renvoyer une chaîne de caractères (`str`).
## Cela crée automatiquement un FuncFormatter.
setup(axs0[1], titre="lambda x, pos: str(x-5)")
axs0[1].xaxis.set_major_formatter(lambda x, pos: str(x-5))

fig0.tight_layout()

Formatage d'objets Formatter

Dans cette étape, nous allons utiliser des objets .Formatter pour formater les étiquettes. Nous allons créer sept tracés, chacun utilisant un formatteur différent.

fig1, axs1 = plt.subplots(7, 1, figsize=(8, 6))
fig1.suptitle('Formatage d\'objets Formatter')

## Formatteur nul
setup(axs1[0], titre="NullFormatter()")
axs1[0].xaxis.set_major_formatter(ticker.NullFormatter())

## Formatteur StrMethod
setup(axs1[1], titre="StrMethodFormatter('{x:.3f}')")
axs1[1].xaxis.set_major_formatter(ticker.StrMethodFormatter("{x:.3f}"))

## FuncFormatter peut être utilisé comme décorateur
@ticker.FuncFormatter
def major_formatter(x, pos):
    return f'[{x:.2f}]'

setup(axs1[2], titre='FuncFormatter("[{:.2f}]".format)')
axs1[2].xaxis.set_major_formatter(major_formatter)

## Formatteur fixe
setup(axs1[3], titre="FixedFormatter(['A', 'B', 'C',...])")
## FixedFormatter ne devrait être utilisé que conjointement avec FixedLocator.
## Sinon, on ne peut pas être sûr où les étiquettes finiront.
positions = [0, 1, 2, 3, 4, 5]
labels = ['A', 'B', 'C', 'D', 'E', 'F']
axs1[3].xaxis.set_major_locator(ticker.FixedLocator(positions))
axs1[3].xaxis.set_major_formatter(ticker.FixedFormatter(labels))

## Formatteur scalaire
setup(axs1[4], titre="ScalarFormatter()")
axs1[4].xaxis.set_major_formatter(ticker.ScalarFormatter(useMathText=True))

## Formatteur FormatStr
setup(axs1[5], titre="FormatStrFormatter('#%d')")
axs1[5].xaxis.set_major_formatter(ticker.FormatStrFormatter("#%d"))

## Formatteur pourcentage
setup(axs1[6], titre="PercentFormatter(xmax=5)")
axs1[6].xaxis.set_major_formatter(ticker.PercentFormatter(xmax=5))

fig1.tight_layout()

Affichage des graphiques

Enfin, nous allons afficher les graphiques en utilisant plt.show().

plt.show()

Récapitulatif

Dans ce laboratoire, nous avons appris à utiliser les formatteurs d'étiquettes dans Matplotlib en passant une chaîne de caractères ou une fonction à ~.Axis.set_major_formatter ou ~.Axis.set_minor_formatter, ou en créant une instance d'une des diverses classes ~.ticker.Formatter et en fournissant celle-ci à ~.Axis.set_major_formatter ou ~.Axis.set_minor_formatter. Nous avons également appris à configurer un tracé avec des positions d'étiquettes, une longueur d'étiquette et un titre.