Introduction
Dans ce laboratoire, vous allez apprendre à créer une BboxImage dans Matplotlib. Une BboxImage peut être utilisée pour positionner une image selon une boîte englobante. Nous allons montrer comment créer une BboxImage avec du texte et comment créer une BboxImage pour chaque carte de couleurs.
Conseils sur la VM
Une fois le démarrage de la VM terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Carnet de notes 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.
Importez les bibliothèques nécessaires
Nous commençons par importer les bibliothèques nécessaires pour ce tutoriel. Nous aurons besoin de matplotlib.pyplot, numpy, BboxImage, Bbox et TransformedBbox.
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.image import BboxImage
from matplotlib.transforms import Bbox, TransformedBbox
Créez une BboxImage avec du texte
Nous commençons par créer une BboxImage avec du texte. Nous créons un objet text avec la méthode text() et l'ajoutons à l'objet ax1. Nous créons ensuite un objet BboxImage en utilisant la méthode add_artist(). Nous passons la méthode get_window_extent de l'objet text au constructeur BboxImage pour obtenir la boîte englobante du texte. Nous passons également un tableau 1D de forme (1, 256) au paramètre data du constructeur BboxImage pour créer une image.
fig, (ax1, ax2) = plt.subplots(ncols=2)
txt = ax1.text(0.5, 0.5, "test", size=30, ha="center", color="w")
ax1.add_artist(
BboxImage(txt.get_window_extent, data=np.arange(256).reshape((1, -1))))
Créez une BboxImage pour chaque carte de couleurs
Ensuite, nous créons une BboxImage pour chaque carte de couleurs. Nous commençons par créer une liste de toutes les cartes de couleurs en utilisant la méthode plt.colormaps. Nous créons ensuite une boucle for qui itère à travers la liste des cartes de couleurs. Pour chaque carte de couleurs, nous calculons la position ix et iy en utilisant la méthode divmod(). Nous créons ensuite un objet Bbox en utilisant la méthode Bbox.from_bounds(). Nous passons les valeurs ix, iy, dx et dy à la méthode Bbox.from_bounds() pour créer la boîte englobante. Nous créons ensuite un objet TransformedBbox en utilisant l'objet Bbox et l'objet ax2.transAxes. Enfin, nous créons un objet BboxImage en utilisant la méthode add_artist(). Nous passons l'objet TransformedBbox au constructeur BboxImage pour créer une image avec la carte de couleurs.
cmap_names = sorted(m for m in plt.colormaps if not m.endswith("_r"))
ncol = 2
nrow = len(cmap_names) // ncol + 1
xpad_fraction = 0.3
dx = 1 / (ncol + xpad_fraction * (ncol - 1))
ypad_fraction = 0.3
dy = 1 / (nrow + ypad_fraction * (nrow - 1))
for i, cmap_name in enumerate(cmap_names):
ix, iy = divmod(i, nrow)
bbox0 = Bbox.from_bounds(ix*dx*(1+xpad_fraction),
1 - iy*dy*(1+ypad_fraction) - dy,
dx, dy)
bbox = TransformedBbox(bbox0, ax2.transAxes)
ax2.add_artist(
BboxImage(bbox, cmap=cmap_name, data=np.arange(256).reshape((1, -1))))
Affichez la figure
Enfin, nous affichons la figure en utilisant la méthode show().
plt.show()
Récapitulatif
Dans ce laboratoire, vous avez appris à créer une BboxImage dans Matplotlib. Nous avons créé une BboxImage avec du texte et une BboxImage pour chaque carte de couleurs. Vous pouvez utiliser ces connaissances pour créer des images avec différentes boîtes englobantes et cartes de couleurs.