Ajout de sous-graphiques

Lorsqu’il s’agit de comparer plusieurs visualisations ou de présenter différentes facettes d’un même jeu de données, il est souvent nécessaire de créer plusieurs graphiques dans une même figure. Les sous-graphiques (ou subplots) permettent d’organiser ces multiples tracés de façon claire et cohérente.

Matplotlib propose plusieurs outils puissants pour gérer les sous-graphiques : la fonction subplot pour une organisation simple en grille, et la classe plus avancée GridSpec, qui offre un contrôle précis sur la taille, la position et la disposition des sous-graphes.

Cette section vous expliquera comment créer, personnaliser et optimiser l’agencement de sous-graphiques, afin de rendre vos présentations visuelles plus complètes et professionnelles.

Fonctions :

  • plt.subplot()

    La fonction plt.subplot() de Matplotlib permet de créer un seul sous-graphique dans une figure. Elle prend un numéro d'index qui spécifie où le sous-graphique doit être placé dans une grille de sous-graphes définie par l'utilisateur. Ce sous-graphique est ensuite utilisé pour tracer des graphiques spécifiques.

    Importation :

    import matplotlib.pyplot as plt

    Attributs :

    Paramètre Type Description Valeur par défaut
    nrows int Nombre de lignes de sous-graphes. 1
    ncols int Nombre de colonnes de sous-graphes. 1
    index int Numéro de l'index du sous-graphique à créer (commence à 1). None

    Exemple de code :

    import matplotlib.pyplot as plt
    
    # Créer une figure avec 2 lignes et 2 colonnes de sous-graphes
    plt.subplot(2, 2, 1)  # Premier sous-graphique
    plt.plot([1, 2, 3], [1, 4, 9])
    
    plt.subplot(2, 2, 2)  # Deuxième sous-graphique
    plt.plot([1, 2, 3], [9, 4, 1])
    
    plt.subplot(2, 2, 3)  # Troisième sous-graphique
    plt.plot([1, 2, 3], [1, 2, 3])
    
    plt.subplot(2, 2, 4)  # Quatrième sous-graphique
    plt.plot([1, 2, 3], [3, 2, 1])
    
    plt.tight_layout()
    plt.show()
    Résultat du code

    Explication du code :

    import matplotlib.pyplot as plt importe la bibliothèque matplotlib.pyplot, renommée ici en plt pour simplifier son utilisation.

    Créer une figure avec 2 lignes et 2 colonnes de sous-graphes

    La fonction plt.subplot(2, 2, 1) divise la figure en une grille de 2 lignes et 2 colonnes et place le premier graphique dans la première position (en haut à gauche). Ensuite, plt.plot([1, 2, 3], [1, 4, 9]) trace une courbe pour ce premier sous-graphique.

    La fonction plt.subplot(2, 2, 2) place le deuxième graphique dans la deuxième position (en haut à droite). Ensuite, plt.plot([1, 2, 3], [9, 4, 1]) trace une courbe pour ce sous-graphique.

    La fonction plt.subplot(2, 2, 3) place le troisième graphique dans la troisième position (en bas à gauche). Ensuite, plt.plot([1, 2, 3], [1, 2, 3]) trace une courbe pour ce sous-graphique.

    La fonction plt.subplot(2, 2, 4) place le quatrième graphique dans la quatrième position (en bas à droite). Ensuite, plt.plot([1, 2, 3], [3, 2, 1]) trace une courbe pour ce dernier sous-graphique.

    Ajuster automatiquement les espacements

    La fonction plt.tight_layout() ajuste automatiquement les espacements entre les sous-graphes pour éviter que les éléments graphiques ne se chevauchent, assurant ainsi une meilleure visibilité et présentation des données.

    Afficher le graphique

    La fonction plt.show() affiche la figure contenant tous les sous-graphes avec les ajustements réalisés.

      • Numérotation des sous-graphes : L'index des sous-graphes commence à 1 et va jusqu'à nrows * ncols. Cela permet de placer des graphiques de manière très précise dans une figure.

      • Utilisation avec plt.subplots() : Alors que plt.subplot() permet de créer un seul sous-graphique, plt.subplots() permet de créer plusieurs sous-graphes d'un coup. plt.subplot() peut donc être utile pour un contrôle fin des sous-graphes lorsque vous travaillez avec une seule figure.

  • plt.subplots()

    La fonction plt.subplots() de Matplotlib est utilisée pour créer plusieurs sous-graphes (axes) dans une figure. Elle permet de définir facilement le nombre de lignes et de colonnes de la grille de sous-graphes. Elle retourne une figure et une ou plusieurs axes, que l'on peut utiliser pour tracer différents graphiques.

    Importation :

    import matplotlib.pyplot as plt

    Attributs :

    Paramètre Type Description Valeur par défaut
    nrows int Nombre de lignes de sous-graphes. 1
    ncols int Nombre de colonnes de sous-graphes. 1
    sharex bool Si True, tous les sous-graphes partageront le même axe X. False
    sharey bool Si True, tous les sous-graphes partageront le même axe Y. False
    figsize tuple Dimensions de la figure (largeur, hauteur) en pouces. (6, 4)
    dpi int Densité de pixels de la figure. 100
    facecolor str Couleur de fond de la figure. 'w'
    edgecolor str Couleur des bords de la figure. 'w'

    Exemple de code :

    import matplotlib.pyplot as plt
    
    # Créer une figure avec 2 lignes et 3 colonnes de sous-graphes
    fig, axes = plt.subplots(nrows=2, ncols=3, figsize=(9, 6))
    
    # Tracer un graphique simple dans chaque sous-graphe
    for ax in axes.flat:
        ax.plot([1, 2, 3], [1, 4, 9])
    
    plt.tight_layout()
    plt.show()
    Résultat du code

    Explication du code :

    import matplotlib.pyplot as plt importe la bibliothèque matplotlib.pyplot, renommée ici en plt pour simplifier son utilisation.

    Créer une figure avec 2 lignes et 3 colonnes de sous-graphes

    La fonction plt.subplots(nrows=2, ncols=3, figsize=(9, 6)) crée une figure contenant 2 lignes et 3 colonnes de sous-graphes, avec une taille totale de figure de 9x6 pouces. Cette fonction retourne un objet fig représentant la figure entière et un tableau axes contenant tous les axes (sous-graphes).

    Tracer un graphique simple dans chaque sous-graphe

    La boucle for ax in axes.flat: permet de parcourir chaque axe (sous-graphe) dans l’objet axes, qui est un tableau de sous-graphes. À chaque itération, ax.plot([1, 2, 3], [1, 4, 9]) trace une courbe simple dans le sous-graphe correspondant.

    Ajuster les espacements entre les sous-graphes

    La fonction plt.tight_layout() ajuste automatiquement les espacements entre les sous-graphes pour éviter les chevauchements et améliorer la lisibilité de la figure.

    Afficher le graphique

    La fonction plt.show() affiche la figure contenant les sous-graphes avec les ajustements réalisés.

  • gridspec.GridSpec()

    La fonction gridspec.GridSpec() de Matplotlib permet de définir une grille de sous-graphes sur une figure. Elle permet de gérer de manière flexible la disposition des sous-graphes, notamment en ajustant la taille des lignes et des colonnes pour obtenir une présentation plus complexe et personnalisée des graphiques.

    Importation :

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

    Attributs :

    Paramètre Type Description Valeur par défaut
    nrows int Nombre de lignes dans la grille de sous-graphes. 1
    ncols int Nombre de colonnes dans la grille de sous-graphes. 1
    width_ratios list Liste des rapports de largeur des colonnes (si vous souhaitez que certaines colonnes soient plus larges que d'autres). None
    height_ratios list Liste des rapports de hauteur des lignes (si vous souhaitez que certaines lignes soient plus hautes que d'autres). None
    left float Position du côté gauche de la grille en termes de fraction de la largeur totale de la figure (valeur entre 0 et 1). 0.125
    right float Position du côté droit de la grille en termes de fraction de la largeur totale de la figure (valeur entre 0 et 1). 0.9
    top float Position du côté supérieur de la grille en termes de fraction de la hauteur totale de la figure (valeur entre 0 et 1). 0.9
    bottom float Position du côté inférieur de la grille en termes de fraction de la hauteur totale de la figure (valeur entre 0 et 1). 0.1

    Exemple de code :

    import matplotlib.pyplot as plt
    import matplotlib.gridspec as gridspec
    
    # Créer une figure
    fig = plt.figure(figsize=(8, 6))
    
    # Définir une grille 2x2 avec des tailles de lignes et de colonnes différentes
    gs = gridspec.GridSpec(nrows=2, ncols=2, width_ratios=[2, 1], height_ratios=[1, 2])
    
    # Créer des sous-graphes dans chaque cellule de la grille
    ax1 = plt.subplot(gs[0, 0])
    ax2 = plt.subplot(gs[0, 1])
    ax3 = plt.subplot(gs[1, 0])
    ax4 = plt.subplot(gs[1, 1])
    
    # Tracer des graphiques simples
    ax1.plot([1, 2, 3], [1, 4, 9])
    ax2.plot([1, 2, 3], [9, 4, 1])
    ax3.plot([1, 2, 3], [1, 2, 3])
    ax4.plot([1, 2, 3], [3, 2, 1])
    
    plt.tight_layout()
    plt.show()
    Résultat du code

    Explication du code :

    import matplotlib.pyplot as plt importe la bibliothèque matplotlib.pyplot, renommée ici en plt pour simplifier son utilisation. import matplotlib.gridspec as gridspec importe le module gridspec de matplotlib, permettant de définir des grilles flexibles pour organiser les sous-graphes de manière personnalisée.

    Créer une figure

    La fonction plt.figure(figsize=(8, 6)) crée une nouvelle figure avec une taille spécifiée de 8x6 pouces.

    Définir une grille 2x2 avec des tailles de lignes et de colonnes différentes

    La variable gs = gridspec.GridSpec(nrows=2, ncols=2, width_ratios=[2, 1], height_ratios=[1, 2]) définit une grille de 2 lignes et 2 colonnes avec des ratios de largeur et de hauteur différents. La première colonne est deux fois plus large que la deuxième, et la deuxième ligne est deux fois plus haute que la première.

    Créer des sous-graphes dans chaque cellule de la grille

    Les sous-graphes sont créés dans chaque cellule de la grille avec plt.subplot(gs[i, j]), où i et j correspondent aux positions des cellules dans la grille :

    • ax1 = plt.subplot(gs[0, 0]) : sous-graphe dans la première cellule de la première ligne (position [0, 0]).
    • ax2 = plt.subplot(gs[0, 1]) : sous-graphe dans la deuxième cellule de la première ligne (position [0, 1]).
    • ax3 = plt.subplot(gs[1, 0]) : sous-graphe dans la première cellule de la deuxième ligne (position [1, 0]).
    • ax4 = plt.subplot(gs[1, 1]) : sous-graphe dans la deuxième cellule de la deuxième ligne (position [1, 1]).
    Tracer des graphiques simples

    Des courbes simples sont tracées dans chaque sous-graphe avec les commandes suivantes :

    • ax1.plot([1, 2, 3], [1, 4, 9]) : trace une courbe dans ax1.
    • ax2.plot([1, 2, 3], [9, 4, 1]) : trace une courbe dans ax2.
    • ax3.plot([1, 2, 3], [1, 2, 3]) : trace une courbe dans ax3.
    • ax4.plot([1, 2, 3], [3, 2, 1]) : trace une courbe dans ax4.
    Ajuster les espacements

    La fonction plt.tight_layout() est utilisée pour ajuster automatiquement les espacements entre les sous-graphes, afin d’éviter les chevauchements.

    Afficher le graphique

    Enfin, la fonction plt.show() est appelée pour afficher la figure contenant les sous-graphes tracés.