- Qu'est-ce que matplotlib ?
- Installation de matplotlib
- L'API Pyplot de Matplotlib
- Traçage d'un graphique à l'aide de la méthode plot()
- Traçage des courbes à l'aide de la méthode numpy.linespace()
- paramétrage des axes à l'aide de la méthode plt.axis()
- Affichage de la grille à l'aide de la méthode plt.grid()
- Ajouter des titres et des étiquettes au graphique
- Graphiques sous forme d'histogrammes à l'aide de la méthode bar()
- Affichage d'un nuage de points à l'aide de la méthode scatter
- Tracer des fonctions plus complexes
- Liste des méthodes associées à la bibliothèque matplotlib
1. Qu'est-ce que matplotlib ?
Matplotlib est l'un des packages Python les plus populaires utilisés pour le traçage des courbes & visualisation de données. Il s'agit d'une bibliothèque multiplateforme permettant de créer des tracés 2D à partir de données dans des tableaux. Il fournit une API orientée objet qui aide à intégrer des tracés dans des applications utilisant des kits d'outils d'interface graphique Python tels que PyQt, WxPythono tTkinter... Il peut également être utilisé dans les shells Python et IPython, les blocs-notes Jupyter et les serveurs d'applications Web.
2. Installation de matplotlib
Matplotlib est disponible sous forme de packages Python standard et peuvent être installés sur les systèmes Windows, Linux et MacOS à l'aide du gestionnaire de packages pip.
1 |
pip install matplotlib |
Le module matplotlib est très lié au module numpy qui exige aussi d'être installer
1 |
pip intall numpy |
3. L'API Pyplot de Matplotlib
matplotlib.pyplot est une collection de fonctions de style de commande qui font fonctionner Matplotlib comme MATLAB. Chaque fonction Pyplot apporte des modifications à une figure. Par exemple, une fonction crée une figure, une zone de traçage dans une figure, trace des lignes dans une zone de traçage, décore le tracé avec des étiquettes, etc.
La plupart des utilitaires Matplotlib se trouvent dans le sous-module pyplot et sont généralement importés sous l'alias plt :
1 |
import matplotlib.pyplot as plt |
Maintenant, le package Pyplot peut être appelé plt.
4. Traçage d'un graphique à l'aide de la méthode plot()
Le module matplotlib utilise un certain nombre de fonctions pour créer un graphique mais si vous ne demandez pas de l'afficher, rien ne se passera. Il est donc nécessaire d'utiliser une méthode nommée plt.plot() pour tracer le graphique et appliquer ensuite la méthode sho() pour le visualiser.
Syntaxe de la méthode plt.plot()
1 |
plt.plot (array_x, array_y) |
- array_x est une liste de nombres [x_1, x_2, ..., x_n]
- array_y est une liste de nombres [y_1, y_2, ..., y_n] avec le même nombre de éléments.
Ensuite plt.plot (array_x, array_y) placera les points de coordonnées (x_1, y_1), (x_2, y_2), ..., (x_n, y_n) et les reliera pas à pas par un segment. Voici un exemple où nous connectons les points (2, 3), (3, 5), (4, 0) et (5, 1):
Exemple
1 2 3 4 |
import matplotlib.pyplot as plt plt.plot ([2, 3, 4, 5], [3, 5, 0, 1]) plt.show () |
Nous pouvons aussi modifier les listes de points dans le programme ci-dessus pour voir l'aspect de la courbe. Ainsi l'idée de dessiner une fonction sera donc de placer beaucoup de points sur la courbe que l'on veut représenter suffisamment près pour ne pas voir qu'ils sont reliés par des segments de droite.
5. Traçage des courbes à l'aide de la méthode numpy.linespace()
Au lieu de saisir manuellement les points de traçage de la courbe comme nous l'avons fait dans l'exemple précédent, nous allons utiliser cette fois-ci une méthode pratique plus moderne, c'est la méthode linespace() de la bibliothèque numpy.
Syntaxe
1 |
np.linspace (début, fin, nombre) |
La fonction np.linspace (), nous permet de créer une liste de N nombres qui commencent à la valeur de début et s'arrêtent à la valeur de fin et sont répartis uniformément.
Par exemple, dessinons la fonction définie par y = sin(x) entre -6 et 6 en utilisant 100 points:
Exemple
1 2 3 4 5 6 |
import matplotlib.pyplot as plt import numpy as np x = np.linspace (-6, 6, 100) y = np.sin (x) plt.plot (x, y) plt.show () |
6. paramétrage des axes à l'aide de la méthode plt.axis()
La méthode plt.axis() nous permet de parmetrer et modifier les axes du graphique. Si elle n'est pas utilisée, le choix des axes se fera automatiquement mais parfois ce choix n'est pas pertinent et il devra donc être modifié avec cette fonction.
Syntaxe
1 |
plt.axis (x_min, x_max, y_min, y_max) |
- Les deux premières valeurs données sont les valeurs minimale et maximale pour l'axe des x
- Les deux suivantes sont celles pour l'axe des y.
Exemple
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import matplotlib.pyplot as plt x =[1, 2, 3, 4, 5] y =[2, 0, 6, 1, 5] # traçage du graphique plt.plot(x, y) # parametrage de l'axe des abscisses x-axis de 0 à 7 # parametrage de l'axe des ordonnées y-axis de 0 à 10 plt.axis([0, 7, 0, 10]) # afficher le graphique plt.show() |
7. Affichage de la grille à l'aide de la méthode plt.grid()
Si on souhaite en plus afficher une grille pour le graphique, on utilise la méthode plt.grid()
Exemple
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import matplotlib.pyplot as plt x =[1, 2, 3, 4, 5] y =[2, 0, 6, 1, 5] # traçage du graphique plt.plot(x, y) # parametrage de l'axe des abscisses x-axis de 0 à 7 # parametrage de l'axe des ordonnées y-axis de 0 à 10 plt.axis([0, 7, 0, 10]) # afficher la grille plt.grid() # afficher le graphique plt.show() |
8. Ajouter des titres et des étiquettes au graphique
Matplotlib nous permet d'illustrer nos graphiques avec des titres, des étiquettes, des textes et des annotations et ce grâce aux méthodes:
- plt.title(): ajoute un titre au graphique
- plt.title(r"Code LaTeX"): ajoute un code LaTeX au titre
- plt.xlabel(): ajoute une étiquette à l'axe des abscisses
- plt.ylabel(): ajoute une étiquette à l'axe des ordonnées
- plt.text(): ajoute un texte au graphique à une position souhaitée
- plt.text(r"Code LaTeX"): ajoute un code LaTeX au graphique à une position souhaitée
- plt.annotate(): ajoute une annotation à la position souhaitée
8.1 La méthode plt.title()
Comme nous l'avons déjà mentionné, cette méthode permet d'ajouter un titre au graphique
Exemple
1 2 3 4 5 6 7 8 9 |
import matplotlib.pyplot as plt import numpy as np x = np.linspace (-6, 6, 100) y = np.sin (x) plt.plot (x, y) # ajouter un titre au graphique plt.title("Graphique de la fonction f(x) = sin(x)") plt.show() |
Exemple: ajouter du code LaTeX au titre
1 2 3 4 5 6 7 8 9 10 11 |
import matplotlib.pyplot as plt import numpy as np from math import * abscisse = np.linspace (1,5,100) ordonnee = [x/(sin(x) + cos(x)) for x in abscisse] plt.plot (abscisse, ordonnee) # ajouter du code LaTeX au titre plt.title(r"$f(x)=\frac{x}{\sin (x)+\cos (x)}$") plt.show () |
8.2 Les méthodes xlabel() et ylabel()
Les méthodes xlabel() et ylabel() permettent d'ajouter des étiquettes aux axes:
Exemple
1 2 3 4 5 6 7 8 9 10 11 |
import matplotlib.pyplot as plt import numpy as np x = np.linspace (-6, 6, 100) y = np.sin (x) plt.plot (x, y) # ajouter des étiquettes aux axes plt.xlabel("Axe des abscisses") plt.ylabel("Fonction sinus") plt.show() |
9. Graphiques sous forme d'histogrammes à l'aide de la méthode bar()
Les graphiques à barres ou graphique sous forme d'histogrammes peuvent être facilement retracés à partir de données telles que des séries statistiques.
Exemple de graphique en histogrammes
1 2 3 4 5 6 7 |
import matplotlib.pyplot as plt import numpy as np x = [1,2,3,4,5] y = [7,11,9,3,6] largeur = 0.5 plt.bar(x, y, largeur) plt.show() |
10. Affichage d'un nuage de points à l'aide de la méthode scatter
On souhaite parfois afficher le graphique uniquement sous forme de nuages de points non reliés par des segments, à cet effet on pourra utiliser la méthode plt.scatter(abscisses, ordonnées), où abscisses est la liste des abscisses des points que nous voulons tracer et ordonnées la liste des ordonnées.
Par exemple, si on désire placer les points (1,3), (2,2.7), (3,3.5), (4,3), (5,3) et (6,4):
Exemple
1 2 3 4 5 6 |
import matplotlib.pyplot as plt import numpy as np x = [1, 2, 3, 4, 5, 6] y = [3, 2.7, 3.5, 3, 3, 4] plt.scatter(x, y) plt.show() |
11. Tracer des fonctions plus complexes
On souhaite maintenant tracer le graphique des fonctions plus complexe à titre d'exemple: f(x) = x*sin(x**2) + 2*x. Dans ce cas, nous ne pouvons plus le faire comme précédement.
11.1 Première méthode
Une première façon de le faire est de créer manuellement la liste des y correspondant au abscisses x via la technique des listes en compréhension, c'est-à-dire de créer une liste composée des f(x) pour x dans la liste des abscisses x.
Nous pourrions donc le faire de la façon suivante:
1 2 3 4 5 6 7 |
import matplotlib.pyplot as plt import numpy as np from math import * abscisse = np.linspace (1,5,100) ordonnee = [x*sin(x**2) + 2*x for x in abscisse] plt.plot (abscisse, ordonnee) plt.show () |
11.2 Deuxième méthode
Une deuxième méthode consiste à utiliser les fonctions classiques modifiées contenues dans la bibliothèque numpy en utilisant la syntaxe np.function():
1 2 3 4 5 6 |
import matplotlib.pyplot as plt import numpy as np x = np.linspace(0,7,100) y = x*np.sin(x**2) + 2*x plt.plot(x, y) plt.show() |
12. Liste des méthodes associées à la bibliothèque matplotlib
Matplotlib est une bibliothèque populaire en Python utilisée pour la création de graphiques et de visualisations dotée de nombreuses méthodes permettant d'améliorer l'experience utilisateur. Voici une liste de méthodes et de fonctions couramment utilisées dans Matplotlib :
12.1 Création d'une figure et d'un axe
- plt.figure(): Crée une nouvelle figure.
- plt.subplots(): Crée une figure et un ou plusieurs axes à l'intérieur.
12.2 Graphiques de base
- plt.plot(): Trace un graphique linéaire ou un nuage de points.
- plt.scatter(): Crée un nuage de points.
- plt.bar(): Trace un graphique en barres.
- plt.hist(): Trace un histogramme.
- plt.boxplot(): Trace un diagramme en boîte.
12.3 Personnalisation du graphique
- plt.xlabel(), plt.ylabel(): Définit les étiquettes des axes x et y.
- plt.title(): Définit le titre du graphique.
- plt.legend(): Ajoute une légende.
- plt.grid(): Ajoute ou supprime la grille.
- plt.xticks(), plt.yticks(): Définit les emplacements et les étiquettes des graduations des axes.
12.4 Personnalisation des styles
- plt.style.use(): Applique un style prédéfini aux graphiques.
- plt.colors(): Gère les couleurs dans les graphiques.
12.5 Graphiques avancés
- plt.contour(), plt.contourf(): Trace des graphiques de contour.
- plt.imshow(): Affiche une image.
- plt.pie(): Trace un graphique en secteurs.
- plt.quiver(): Trace un graphique de vecteurs.
12.6 Personnalisation avancée
- plt.subplots_adjust(): Ajuste la disposition des sous-graphiques.
- plt.tight_layout(): Ajuste automatiquement les espacements pour éviter les chevauchements.
12.7 Sauvegarde et affichage
- plt.show(): Affiche le graphique.
- plt.savefig(): Enregistre le graphique dans un fichier.
12.8 Gestion des axes
- ax.set_xlim(), ax.set_ylim(): Définit les limites des axes x et y.
- ax.set_xscale(), ax.set_yscale(): Définit l'échelle des axes x et y.
12.9 Annotations et textes
- ax.text(): Ajoute un texte à un emplacement spécifié sur le graphique.
- ax.annotate(): Ajoute une annotation avec une flèche sur le graphique.
- ax.legend(): Ajoute une légende à un axe spécifique.
12.10 Personnalisation des lignes et des marqueurs
- plt.plot(..., linestyle='-', marker='o'): Personnalise le style de ligne et de marqueur.
12.11 Personnalisation des couleurs et des palettes
- plt.color_palette(): Définit une palette de couleurs personnalisée.
- plt.colormaps(): Liste des cartes de couleurs disponibles.
12.12 Personnalisation des bordures et des arrière-plans
- ax.spines['top'].set_visible(False): Cache les bords supérieurs de l'axe.
- ax.set_facecolor(): Définit la couleur de fond de l'axe.
12.13 Utilisation de sous-graphiques
- plt.subplot2grid(): Crée des sous-graphiques dans une grille personnalisée.
- gridspec.GridSpec(): Crée des sous-graphiques avec une mise en page complexe.
12.14 Personnalisation des échelles des axes
- ax.set_xscale('log'): Définit l'échelle logarithmique pour l'axe x.
12.15 Graphiques 3D
- from mpl_toolkits.mplot3d import Axes3D: Importe les outils pour les graphiques 3D.
- ax = fig.add_subplot(111, projection='3d'): Crée un axe pour les graphiques 3D.
- ax.plot_surface(), ax.scatter(), ax.contour(): Tracer des graphiques 3D.
12.16 Graphiques interactifs
- plt.gcf().canvas.mpl_connect(): Gère les événements interactifs.
- La bibliothèque matplotlib.animation: permet de créer des animations à partir de graphiques.
- La bibliothèque mplcursors: permet d'ajouter des étiquettes interactives aux points de données.
12.17 Personnalisation des légendes & latex
- ax.legend(handles, labels): Contrôle manuellement les éléments de la légende.
- Vous pouvez utiliser la syntaxe LaTeX: pour les étiquettes en encadrant le texte avec des signes dollar ($).
12.18 Visualisation de données géospatiales
- La bibliothèque basemap: permet de créer des cartes géographiques.
12.19 Visualisation de données financières
- La bibliothèque mplfinance : propose des outils pour visualiser des données financières.
Younes Derfoufi
CRMEF OUJDA