MatPlotLib permet d'afficher plusieurs informations simultanément. Plusieurs alternatives vous sont proposées :
Reprenons ces possibilités une à une.
L'une des fonctionnalités puissantes de Matplotlib est sa capacité à afficher plusieurs courbes avec des échelles différentes en ordonnées. Cette technique permet de comparer et de mettre en relation des données ayant des échelles différentes, ce qui facilite l'exploration et l'analyse des tendances, des corrélations ou des disparités entre les différentes séries de données.
Lorsque vous travaillez avec des ensembles de données hétérogènes, où les valeurs varient significativement en termes de magnitude ou d'unités, il peut être difficile d'obtenir une visualisation claire et informative en utilisant une seule échelle. En utilisant plusieurs systèmes d'axes dans un même graphique, Matplotlib offre une solution permettant de représenter ces données avec des échelles adaptées à chaque série.
Voici un exemple simple affichant des courbes pour deux fonctions mathématiques classique : une fonction Sinus et une fonction carré. Dans cet exemple, les différents systèmes d'axes ne sont pas encore configurés. Il en découle une difficulté certaine à interpréter la courbe sinus.
import numpy as np
import matplotlib.pyplot as plt
# On calcule les données pour nos deux courbes.
x = np.linspace(-10, 10, 1000)
y1 = x ** 2
y2 = np.sin(x)
# On trace nos deux courbes.
plt.plot(x, y1, "b", label="Fonction carré")
plt.plot(x, y2, "r", label="Fonction sinus")
plt.legend()
# On affiche la fenêtre.
plt.show()
Introduisons maintenant un nouveau système d'axes : cela se fait en invoquant la méthode « twinx » à partir du premier système d'axes.
Notez la possibilité d'afficher les labels pour nos ordonnées en couleur : cela permet de mettre en relation l'échelle proposée avec la bonne courbe associée.
import numpy as np
import matplotlib.pyplot as plt
# On calcule les données pour nos deux courbes.
x = np.linspace(-10, 10, 1000)
y1 = x ** 2
y2 = np.sin(x)
# On récupère le système d'axes (ax) et on l'utilise pour tracer la fonction carré.
fig, ax = plt.subplots()
ax.plot(x, y1, "b")
ax.set_xlabel("x values", fontsize=14)
ax.set_ylabel("square values", color="blue", fontsize=14)
# On produit un second système d'axes à partir du premier et on l'utilise pour tracer la fonction sinus.
ax2 = ax.twinx()
ax2.plot(x, y2, "r")
ax2.set_ylabel("sinus", color="red", fontsize=14)
# On prépare la légende pour nos deux courbes.
lines = [ax.get_lines()[0], ax2.get_lines()[0]]
plt.legend(lines, ["Fonction carrée", "Fonction sinus"], loc="upper center")
# Et on affiche le tout.
plt.show()
Afficher plusieurs graphiques dans des fenêtres distinctes est une approche courante pour visualiser différentes informations graphiques simultanément. Cette technique vous permet de créer des fenêtres séparées pour chaque graphique, offrant ainsi une vue détaillée et ciblée sur chaque visualisation.
En utilisant Matplotlib, vous pouvez facilement créer plusieurs fenêtres de graphiques en utilisant la fonction plt.figure() pour chaque graphique. Chaque fenêtre de graphique peut être personnalisée individuellement avec des axes, des titres, des étiquettes et des styles spécifiques.
Voici un exemple illustrant cette technique : bien entendu un backend Qt est requis pour cette démonstration.
%matplotlib qt
import numpy as np
import matplotlib.pyplot as plt
# On calcule les données pour nos deux courbes.
x = np.linspace(-10, 10, 1000)
y1 = x ** 2
y2 = np.sin(x)
# On trace notre première courbe dans une première figure (fenêtre graphique).
plt.figure("Fonction Carrée")
plt.plot(x, y1, "b")
# On trace notre seconde courbe dans une second figure (fenêtre graphique).
plt.figure("Fonction Sinus")
plt.plot(x, y2, "r")
# On affiche nos deux figures : attention, les fenêtres peuvent être l'une sur l'autre !
plt.show()
%matplotlib inline
Afficher plusieurs graphiques les uns à côté des autres au sein d'une même fenêtre est une technique utile pour comparer visuellement différents graphiques et repérer les tendances, les relations ou les différences entre les données. Cette approche vous permet de regrouper plusieurs visualisations dans une seule fenêtre, offrant une vue globale et comparative des informations.
Matplotlib fournit des fonctionnalités pour créer des mises en page de graphiques personnalisées en utilisant la fonction subplot() pour organiser les graphiques dans une grille. Voici la signature de la fonction subplot :
plt.subplot(nrows, ncols, index, **kwargs)
ou
Voici un exemple illustrant cette technique : ce code génère et affiche des signaux sinusoïdaux avec différentes fréquences, ainsi qu'un signal résultant qui est la somme de ces signaux. Cela permet de visualiser et de comparer les différentes fréquences des signaux dans des sous-graphiques distincts.
import numpy as np
import matplotlib.pyplot as plt
# Trois signaux avec trois fréquences différentes
x = np.linspace(0, 1, 1000)
y1 = np.sin(x * (20*np.pi)) # 10 hz
y2 = np.sin(x * (50*np.pi)) # 25 hz
y3 = np.sin(x * (100*np.pi)) # 50 hz
# Génération du signal multi-fréquences
y = y1 + y2 + y3
# Nous allons considérer une grille de quatre lignes et d'une seule colonne.
# Première ligne
plt.subplot(4, 1, 1)
plt.plot(x, y1, c="r", label="10 Hz")
plt.legend(loc="center right")
# Seconde ligne
plt.subplot(4, 1, 2)
plt.plot(x, y2, c="g", label="25 Hz")
plt.legend(loc="center right")
# Troisième ligne
plt.subplot(4, 1, 3)
plt.plot(x, y3, c="b", label="50 Hz")
plt.legend(loc="center right")
# Dernière ligne
plt.subplot(4, 1, 4)
plt.plot(x, y, label="Signal à traiter")
plt.legend(loc="center right")
# Fignolage et affichage
plt.tight_layout() # Sans cette ligne, il y a des chevauchements dans les étiquettes
plt.show()