Data Visualization

Maîtriser les tailles de subplots Matplotlib : Trois méthodes puissantes

Spread the love

Matplotlib offre des outils puissants pour créer des visualisations, et la personnalisation des tailles des sous-graphiques est essentielle à une communication efficace. Cet article explore trois méthodes pour créer des sous-graphiques de tailles variables dans Matplotlib, en fournissant des exemples et des explications claires pour chacun.

Table des matières

Utiliser gridspec pour des dispositions de sous-graphiques flexibles

Le module matplotlib.gridspec fournit l’approche la plus flexible pour créer des sous-graphiques de tailles variables. Il permet de définir une grille, puis d’affecter des sous-graphiques à des régions spécifiques de cette grille, en contrôlant leurs tailles relatives à l’aide de height_ratios et width_ratios.


import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec

fig = plt.figure(figsize=(10, 6))
gs = gridspec.GridSpec(nrows=2, ncols=2, height_ratios=[2, 1], width_ratios=[1, 2])

ax1 = fig.add_subplot(gs[0, 0])
ax2 = fig.add_subplot(gs[0, 1])
ax3 = fig.add_subplot(gs[1, :])  # S'étendant sur les deux colonnes

ax1.plot([1, 2, 3], [4, 5, 6])
ax2.plot([1, 2, 3], [6, 4, 5])
ax3.plot([1, 2, 3, 4, 5], [2, 4, 1, 3, 5])

plt.tight_layout()
plt.show()

Ce code crée une grille 2×2 avec la rangée supérieure deux fois plus haute que la rangée inférieure et la colonne de droite deux fois plus large que la colonne de gauche. Chaque sous-graphique est ensuite ajouté à sa zone désignée.

Tirer parti de gridspec_kw pour un contrôle concis

Pour des dispositions plus simples, l’argument gridspec_kw dans plt.subplots() offre une alternative plus concise. Il intègre directement les fonctionnalités de gridspec sans nécessiter la création explicite d’un objet gridspec.


import matplotlib.pyplot as plt

fig, axes = plt.subplots(2, 2, figsize=(10, 6), gridspec_kw={'height_ratios': [2, 1], 'width_ratios': [1, 2]})

axes[0, 0].plot([1, 2, 3], [4, 5, 6])
axes[0, 1].plot([1, 2, 3], [6, 4, 5])
axes[1, 0].plot([1, 2, 3], [2, 4, 1])
axes[1, 1].plot([1, 2, 3], [5, 3, 1])

plt.tight_layout()
plt.show()

Cela donne un résultat similaire à l’exemple gridspec mais avec une syntaxe plus propre. Notez que chaque sous-graphique occupe ici une seule cellule ; s’étendre sur plusieurs cellules nécessite l’approche gridspec plus flexible.

Placement précis avec subplot2grid

La fonction subplot2grid permet un contrôle précis du placement des sous-graphiques à l’aide d’indices de ligne et de colonne, et des attributs rowspan et colspan pour définir la taille et la position de chaque sous-graphique dans la grille.


import matplotlib.pyplot as plt

fig = plt.figure(figsize=(10, 6))

ax1 = plt.subplot2grid((2, 2), (0, 0), rowspan=1, colspan=1)
ax2 = plt.subplot2grid((2, 2), (0, 1), rowspan=1, colspan=2)
ax3 = plt.subplot2grid((2, 2), (1, 0), rowspan=1, colspan=2)

ax1.plot([1, 2, 3], [4, 5, 6])
ax2.plot([1, 2, 3], [6, 4, 5])
ax3.plot([1, 2, 3, 4, 5], [2, 4, 1, 3, 5])

plt.tight_layout()
plt.show()

Bien que puissante, subplot2grid peut devenir moins lisible pour les dispositions complexes. Choisissez la méthode la mieux adaptée à vos besoins : gridspec pour la flexibilité, gridspec_kw pour les dispositions simples concises et subplot2grid pour un contrôle précis des positions des sous-graphiques individuels.

N’oubliez pas d’utiliser toujours plt.tight_layout() pour éviter les chevauchements d’éléments et garantir une apparence nette et professionnelle.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *