Skip to content

Comment créer rapidement plusieurs graphiques linéaires avec Matplotlib

La visualisation des données est un élément clé de toute analyse de données. Elle permet de représenter de manière claire et intuitive des ensembles de données complexes et de mettre en lumière des tendances et des motifs qui ne seraient pas évidents à partir des données brutes seules. Parmi la pléthore d'outils disponibles à cette fin, Matplotlib est l'une des bibliothèques Python les plus utilisées, offrant une plate-forme polyvalente et puissante pour créer des graphiques statiques, animés et interactifs.

Une fonctionnalité couramment utilisée dans Matplotlib est sa capacité à créer plusieurs graphiques linéaires dans un seul graphique. Dans ce guide complet, nous aborderons les spécificités de la création de ces visualisations, en mettant l'accent à la fois sur les principes de base et les concepts plus avancés.

Les bases : tracer deux lignes

Commençons par un scénario simple : tracer deux graphiques linéaires dans le même graphique. Voici le code qu'un utilisateur a posté sur un forum en ligne, signalant que l'axe des y était imprimé deux fois :

import matplotlib.pyplot as plt
 
x = [0, 1, 2, 3, 4, 5]
y1 = ['1000', '13k', '26k', '42k', '60k', '81k']
y2 = ['1000', '13k', '27k', '43k', '63k', '85k']
 
plt.plot(x, y1)
plt.plot(x, y2, '-.')
 
plt.xlabel("Données de l'axe des x")
plt.ylabel("Données de l'axe des y")
plt.title('graphiques multiples')
plt.show()

Un simple coup d'œil au code révèle la cause du problème : les valeurs y tracées sont des chaînes de caractères plutôt que des nombres. Lorsque Matplotlib rencontre des données de type chaîne de caractères, il ne trace pas ces valeurs sur une échelle numérique. Au lieu de cela, il trace simplement les étiquettes de chaîne de caractères à leurs coordonnées x respectives, ce qui entraîne la superposition de plusieurs étiquettes sur l'axe des y.

Résoudre le problème des chaînes de caractères : conversion en nombres

Pour remédier à ce problème, le 'k' dans les chaînes de caractères doit être remplacé par 'e3', ce qui permet à ces chaînes de représenter des nombres en notation scientifique. Elles peuvent ensuite être converties en nombres à virgule flottante à l'aide de la fonction float() de Python.

Le code corrigé ressemblerait alors à ceci :

import matplotlib.pyplot as plt
 
x = [0, 1, 2, 3, 4, 5]
 
y1 = ['1000', '13k', '26k', '42k', '60k', '81k']
y2 = ['1000', '13k', '27k', '43k', '63k', '85k']
 
plt.plot(x, [float(i.replace('k', 'e3')) for i in y1])
plt.plot(x, [float(i.replace('k', 'e3')) for i in y2], '-.')
 
plt.xlabel("Données de l'axe des x")
plt.ylabel("Données de l'axe des y")
plt.title('graphiques multiples')
plt.show()

Avec ce simple changement, l'utilisateur a pu tracer correctement deux lignes sur le même graphique sans duplication d'étiquettes sur l'axe des y. Il est important de noter, cependant, que cette conversion est effectuée uniquement à des fins de tracé et ne modifie pas les données d'origine.

Affiner les graphiques linéaires multiples : légendes, lignes de quadrillage et annotations

Les légendes peuvent être ajoutées au graphique à l'aide de la fonction legend(), tandis que les lignes de quadrillage peuvent être activées ou désactivées à l'aide de la fonction grid(). Pour les annotations, vous pouvez utiliser la fonction annotate() pour ajouter du texte informatif au graphique.

En appliquant ces techniques, notre code final pour créer des graphiques linéaires multiples avec Matplotlib pourrait ressembler à ceci :

import matplotlib.pyplot as plt
 
x = [0, 1, 2, 3, 4, 5]
 
y1 = ['1000', '13k', '26k', '42k', '60k', '81k']
y2 = ['1000', '13k', '27k', '43k', '63k', '85k']
 
plt.plot(x, [float(i.replace('k', 'e3')) for i in y1], label='Ligne 1')
plt.plot(x, [float(i.replace('k', 'e3')) for i in y2], '-.', label='Ligne 2')
 
plt.xlabel("Données de l'axe des x")
plt.ylabel("Données de l'axe des y")
plt.title('graphiques multiples')
plt.grid(True)
plt.legend()
plt.annotate('Valeur maximale pour Ligne 2', xy=(4, 85000), xytext=(3, 70000),
             arrowprops=dict(facecolor='black', shrink=0.05))
 
plt.show()

Comme on peut le voir, la création de graphiques linéaires multiples avec Matplotlib est un processus relativement simple qui offre un large éventail d'options de personnalisation pour créer des visualisations belles, informatives et perspicaces.

FAQ

Q : Puis-je tracer plus de deux lignes dans un seul graphique avec Matplotlib ?

Oui, vous pouvez tracer autant de lignes que vous le souhaitez sur un seul graphique en utilisant Matplotlib. Il suffit de répéter la fonction plot() avec les données souhaitées pour chaque ligne.

Q : Quels autres types de graphiques puis-je créer avec Matplotlib ?

Matplotlib prend en charge une large gamme d'autres types de graphiques, notamment les graphiques de dispersion, les graphiques à barres, les histogrammes et même les graphiques en 3D. La bibliothèque est très polyvalente et peut répondre à presque tous les besoins de visualisation de données.

Q : Comment puis-je enregistrer mon graphique dans un fichier à l'aide de Matplotlib ?

Après avoir créé votre graphique, vous pouvez utiliser la fonction savefig() pour l'enregistrer dans un fichier. La fonction prend un nom de fichier en argument, et vous pouvez spécifier le format du fichier (par exemple, PNG, PDF, SVG, etc.) en utilisant l'extension de fichier appropriée.

plt.savefig('mon_graphique.png')

Alternative à Matplotlib : Visualisez les données avec PyGWalker

En plus d'utiliser Matplotlib pour visualiser votre dataframe pandas, voici une alternative, une bibliothèque Python Open Source qui peut vous aider à créer facilement des visualisations de données : PyGWalker (opens in a new tab).

PyGWalker pour la visualisation des données (opens in a new tab)

Plus besoin de réaliser des traitements complexes avec du code Python, importez simplement vos données et faites glisser-déposer les variables pour créer toutes sortes de visualisations de données ! Voici une vidéo de démonstration rapide sur les opérations :


Voici comment utiliser PyGWalker dans votre notebook Jupyter :

pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)

Alternativement, vous pouvez l'essayer dans Kaggle Notebook / Google Colab :

Exécuter PyGWalker dans Kaggle Notebook (opens in a new tab)Exécuter PyGWalker dans Google Colab (opens in a new tab)Donnez un ⭐️ à PyGWalker sur GitHub (opens in a new tab)
Exécuter PyGWalker dans Kaggle Notebook (opens in a new tab)Exécuter PyGWalker dans Google Colab (opens in a new tab)Exécuter PyGWalker dans Google Colab (opens in a new tab)

PyGWalker est soutenu par notre communauté Open Source. N'oubliez pas de consulter PyGWalker GitHub (opens in a new tab) et de nous donner une étoile !

FAQ

Puis-je tracer plus de deux lignes dans un seul graphique avec Matplotlib ?

Oui, vous pouvez tracer autant de lignes que vous le souhaitez dans un seul graphique à l'aide de Matplotlib. Il vous suffit de répéter la fonction plot() avec les données souhaitées pour chaque ligne.

Quels autres types de graphiques puis-je créer avec Matplotlib ?

Matplotlib prend en charge une large gamme d'autres types de graphiques, notamment des graphiques de dispersion, des graphiques à barres, des histogrammes et même des graphiques 3D. La bibliothèque est très polyvalente et peut répondre à presque tous les besoins en matière de visualisation de données.

Comment puis-je enregistrer mon graphique dans un fichier à l'aide de Matplotlib ?

Une fois que vous avez créé votre graphique, vous pouvez utiliser la fonction savefig() pour l'enregistrer dans un fichier. La fonction prend un nom de fichier en argument, et vous pouvez spécifier le format du fichier (par exemple, PNG, PDF, SVG, etc.) en utilisant l'extension de fichier appropriée.