Le module matplotlib

1. À propos du module matplotlib

Matplotlib est une bibliothèque de traçage des courbes, des surfaces associé au langage Python et son extension mathématique numérique NumPy. Il fournit une API orientée objet pour incorporer des tracés dans des applications à l'aide de boîtes à outils GUI générales comme Tkinter, wxPython, PyQt ou GTK.
Le module matplotlib est un module large et très complet. Nous allons voir ici quelques exemples d'utilisation comme par exemple le tracé de représentations graphiques de fonctions ou de séries statistiques. Vous trouverez plus d'informations sur la documentation officielle matplotlib.

2. Importation du module matplotlib & pyplot.

Comme tous les modules, il doit être chargé et plus précisément c'est un sous-module qui nous intéressera: pyplot. Pour cela, nous ne chargerons pas toutes les fonctions comme d'habitude mais l'importons sous un nom plus court à utiliser. Nous utiliserons donc import matplotlib.pyplot comme plt. Cela signifie que pour utiliser une fonction de ce module comme show () par exemple, nous devrons écrire plt.show () (puisque nous avons importé le module sous le nom plt). De plus, le module matplotlib est très lié à un autre module qui sert à faire du calcul numérique qui s'appelle numpy et qui est souvent importé sous le nom np. En résumé, si vous voulez représenter graphiquement des fonctions ou autres, vous devrez mettre dans l'en-tête:

import matplotlib.pyplot as plt
import numpy as np

3 - Méthodes de bases

3.1 plt.show():

Le module matplotlib utilise un certain nombre de fonctions  pour préparer le 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 visualiser le graphique.

Syntaxe de la méthode plt.plot()

plt.plot (liste_x, liste_y)
  1. liste_x est une liste de nombres [x_1, x_2, ..., x_n]
  2. liste_y est une liste de nombres [y_1, y_2, ..., y_n] avec le même nombre de éléments.
  3. Ensuite plt.plot (liste_x, liste_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 (1, 3), (4, 2) et (5, 7):

Exemple en utilisant la méthode plot ()

import matplotlib.pyplot as plt
import numpy as np
plt.plot ([1,4,5], [3,2,7])
plt.show ()

Vous pouvez modifier les listes de points dans le programme ci-dessus pour voir le résultat.
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 une droite.

3.2 np.linspace (début, fin, N)

C'est là qu'intervient le module numpy. Pour tracer correctement une fonction, nous aurons besoin de beaucoup de points qu'il est hors de question de saisir à la main comme dans l'exemple précédent. La fonction np.linspace (début, fin, nombre) vous 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 -5 et 5 en utilisant 100 points:

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace (-5, 5, 100)
y = np.sin (x)
plt.plot (x, y)
plt.show ()

3.3 - plt.axis (x_min,   x_max,   y_min,   y_max):

Cette fonction vous permet de modifier les axes du système de coordonnées qui seront affichés. S'il n'est pas utilisé, le choix des axes se fera automatiquement mais parfois ce choix n'est pas pertinent et il devra donc être modifié avec cette fonction. Les deux premières valeurs données sont les valeurs minimale et maximale pour l'axe des x et les deux suivantes sont celles pour l'axe des y.

3.4 - plt.grid():

Affiche une grille supplémentaire sur notre système de coordonnées.

4. Tracer des fonctions plus complexes

Supposons que nous voulons dessiner des fonctions impliquant autre chose que les opérations +, -, * telles que logarithme, exponentielle, cosinus, sinus ... Dans ce cas, nous ne pouvons pas faire exactement comme dans l'exemple précédent.

4.1 Première méthode

Une première façon de le faire est de créer manuellement la liste des y correspondant au x, c'est-à-dire de créer une liste composée des f (x) pour x dans la liste des abscisses.
Par exemple, si nous voulons tracer la fonction y = 2 * sin (x) + x entre 0 et 7, nous pourrions le faire:

import matplotlib.pyplot as plt
import numpy as np
from math import *
abscisse = np.linspace (0,7,100)
ordonnee = [2*sin(x) + x for x in abscisse]
plt.plot (abscisse, ordonnee)
plt.show ()

4.2 Deuxième méthode

Une deuxième méthode consiste à utiliser les fonctions classiques modifiées contenues dans numpy en utilisant la syntaxe np.function ():

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,7,100)
y = 2 * np.sin(x) + x
plt.plot(x, y)
plt.show()

5. Dessin de graphiques sous forme d'histogrammes

Les graphiques à barres et les histogrammes peuvent être facilement retracés à partir de données telles que des séries statistiques.

Exemple de graphique en histogrammes

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()

6. Affichage d'un nuage de points

Pour dessiner des points, utilisez simplement la fonction plt.scatter (abscisses, ordonnées) où abscisses est la liste des abscisses des points que nous voulons tracer et ordonne la liste des ordonnées.
Par exemple, si vous souhaitez placer les points (1,3),  (2,2.7),  (3,3.5),  (4,3),  (5,3) et (6,4):

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()

 

Younes Derfoufi
CRMEF OUJDA

 

2 thoughts on “Le module matplotlib

Leave a Reply

Your email address will not be published. Required fields are marked *