- 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
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 2 3 |
pip install matplotlib |
Le module matplotlib est très lié au module numpy qui exige aussi d'être installer
1 2 3 |
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 2 3 |
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 2 3 |
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 5 6 |
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 2 3 |
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 7 8 |
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 2 3 |
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 15 16 |
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 18 19 |
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 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 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 12 13 |
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 12 13 |
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 8 9 |
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 7 8 |
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 8 9 |
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 7 8 |
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() |
Younes Derfoufi
CRMEF OUJDA