Création de plusieurs tracés dans une seule figure #
Supposons que tu travailles avec un ensemble de données contenant l’âge d’une personne, le logiciel sur lequel elle travaille et son salaire. Tu souhaites visualiser l’âge et le salaire des développeurs Python, puis les comparer à ceux des développeurs Java. Tu sais maintenant que tu peux le faire en créant deux graphiques, un dans chaque cellule du notebook. Mais alors, tu dois faire des allers-retours pour comparer, et nous ne devrions pas parler de ce qui se passe s’il y a 4 choses à comparer !
Pour résoudre ce problème, nous disposons d’une fonctionnalité appelée subplots (sous-parcelles), sur le même graphique, il y aura différents sous-graphes pour chacune d’entre eux. Tu peux créer les sous-graphes en utilisant plt.subplots(nrows=x,ncols=y)
. Par défaut, nrows=1
et ncols=1
. plt.subplots()
renvoie deux éléments : l’un (fig
) permet de styliser l’ensemble du graphique et l’autre (axes
) permet de créer des sous-graphes. Trace chaque sous-graphe en utilisant axes[row, column]
, où row
et column
spécifient l’emplacement du sous-graphe dans la grille. Tu peux utiliser les paramètres sharex
ou sharey
lorsque tu as des axes communs pour les sous-graphes. Voyons quelques exemples pour clarifier les choses.
import matplotlib.pyplot as plt import numpy as np # Exemple de données x = np.linspace(0, 2 * np.pi, 100) y1 = np.sin(x) y2 = np.cos(x) y3 = np.tan(x) y4 = np.exp(x) # Créer une grille 2x2 de subplots fig, axes = plt.subplots(nrows=2,ncols=2, figsize=(10, 8)) # Tracer le premier sous-graphe (en haut à gauche) - axes[0,0] axes[0, 0].plot(x, y1, color='blue') axes[0, 0].set_title('Fonction sinusoïdale') # Tracer le deuxième sous-graphe (en haut à droite) - axes[0,1] axes[0, 1].plot(x, y2, color='green') axes[0, 1].set_title('Fonction Cosinus') # Tracer le troisième sous-graphe (en bas à gauche) - axes[1,0] axes[1, 0].plot(x, y3, color='red') axes[1, 0].set_title('Fonction tangente') # Tracer le quatrième sous-graphe (en bas à droite) - axes[1,1] axes[1, 1].plot(x, y4, color='purple') axes[1, 1].set_title('Fonction exponentielle') # Ajuster l'espacement entre les subplots plt.tight_layout() # Ajouter un titre commun à tous le subplots fig.suptitle('Fonctions diverses', fontsize=16) # Afficher les sous-graphes plt.show()

Combiner différents types de graphiques #
Lorsque nous comparons des graphiques, nous ne souhaitons pas toujours avoir les mêmes axes pour les deux graphiques, n’est-ce pas ? Dans certains cas, nous aurons un axe commun et d’autres axes différents !
Dans ce cas, tu peux combiner ces différents tracés au sein d’une même figure à l’aide des fonctions twinx()
ou twiny()
pour partager un axe tout en ayant des axes y ou x indépendants. Par exemple, tu peux combiner un graphique linéaire du mois par rapport au revenu avec un graphique à barres du mois par rapport au chiffre d’affaires, afin de visualiser deux ensembles de données connexes à des échelles différentes. Ici, nous avons un axe x commun mais un axe y différent.
# Exemple de données x = np.arange(1, 6) y1 = np.array([10, 15, 7, 12, 9]) y2 = np.array([200, 300, 150, 250, 180]) # Créer un diagramme à barres fig, ax1 = plt.subplots(figsize=(8, 4)) ax1.bar(x, y1, color='b', alpha=0.7, label='Ventes') ax1.set_xlabel('Mois') ax1.set_ylabel('Ventes', color='b') ax1.set_ylim(0, 20) # Définir les limites de l'axe des ordonnées pour l'axe des ordonnées gauche # Créer un graphique linéaire partageant l'axe des x ax2 = ax1.twinx() ax2.plot(x, y2, color='r', marker='o', label='Recettes') ax2.set_ylabel('Recettes', color='r') ax2.set_ylim(0, 400) # Définir les limites de l'axe des ordonnées pour l'axe des ordonnées de droite # Ajouter une légende fig.legend(loc='upper left', bbox_to_anchor=(0.15, 0.85)) # Ajouter un titre plt.title('Comparaison des ventes et des recettes') # Montrer le graphique plt.show()
