Représentation graphique des données : matplotlib

De WikiMéca
Sauter à la navigation Sauter à la recherche

Matplotlib est une bibliothèque du langage Python destinée à tracer et visualiser des données sous formes de graphiques.

Logo Matplotlib.svg

Il est nécessaire d'importer la bibliothèque en créant un alias (plt par convention) : import matplotlib.pyplot as plt


Commandes utiles de Matplotlib

  • plt.plot(x,y) : permet de représenter des fonctions en reliant par une lignes les couples de points (x[i],y[i]) successifs contenus dans les deux tableaux x et y (qui doivent donc être de même taille).
  • plt.show(): déclenche l’affichage à l’écran. Attention, cela stoppe l’exécution du script en cours.
  • plt.savefig(fichier): permet de sauvegarder la figure en cours dans le fichier fichier. Utile pour circonvenir à la limitation précédente d’arrêt du script lors de l’affichage.
  • plt.clf(): efface la figure en cours (clf pour « CLear Figure ») car plt continue d’ajouter des éléments à la même figure tant qu’on ne lui a pas dit d’arrêter.


Les possibilités sont extrêmement nombreuses. Pour des utilisations plus spécifiques que tracer une courbe ou une courbe paramétrée, on se reportera la documentation du module : https://matplotlib.org/gallery.html

Exemple 1 : Tracé d’une ligne brisée

On se donne des listes X et Y de même taille. Le premier représente les abscisses des points à relier, le second leurs ordonnées. On trace ainsi la ligne polygonale reliant les points .

1 import matplotlib.pyplot as plt
2 
3 X=[1 , 2 ,3 ,4 , 5] # liste des abscisses
4 Y= [2 ,1 , -5 ,3 , -2] # liste des ordonnées
5 plt. plot (X,Y) # tracé de la ligne polygonale
6 plt. show () # affichage du tracé

Ce qui donne : Exemple 1.svg

Exemple 2 : Tracé du graphe d’une fonction

On trace en réalité un grand nombre de petits segments reliant des points de la courbe. On peut construire les listes de coordonnées avec une boucle, ou bien en compréhension. Ici, on utilise numpy.linspace(a,b,n) pour créer le tableau des abscisses et on applique la fonction f à ce tableau. On obtient ainsi le tableau des ordonnées. On trace par exemple le graphe de la fonction cos sur [−2π, 2π] :

1 import matplotlib.pyplot as plt
2 import numpy as np
3 X=np.linspace(-2*np.pi ,2*np.pi ,100) # tableau des abscisses ( seulement 10)
4 Y=np.cos(X) # tableau des ordonnées
5 plt.plot(X,Y) # tracé de la courbe
6 plt.show () # affichage du tracé

Ce qui donne : Exemple2.png

Exemple 3 : Tracé d’une courbe paramétrée

De la même manière, on définit le tableau T des valeurs du paramêtre. On lui applique ensuite la fonction x pour avoir le tableau des abscisses et la fonction y pour avoir le tableau des ordonnées. Traçons par exemple, la courbe paramétrée suivante :


 1 import matplotlib.pyplot as plt
 2 import numpy as np
 3 
 4 T=np.linspace (0 ,2*np.pi ,100) # tableau des valeurs de t
 5 def x(t) : return np.cos(t)**2+ np.cos(t) -1
 6 def y(t) : return (1+ np.cos(t)) *np.sin(t)
 7 X=x(T) # tableau des abscisses
 8 Y=y(T) # tableau des ordonnées
 9 plt.axis (equal ) # permet d’avoir un repère orthonormé
10 plt.plot (X,Y) # tracé de la courbe
11 plt.show () # affichage du tracé

Ce qui donne : Exemple3svg.svg

Mise en forme

Quelques commandes sont à connaitre pour modifier les tracés, insérer une légende, un titre... Arguments supplémentaires dans la fonction pylab.plot :

  • color=black. D’autres couleurs sont possibles : ’green’, ’green2’, ’green3’, ’yellow’, ’red’, ’purple’, ’blue’,’pink’, ’gray’, ’gray1’,’gray2’, ’gray3’, ’gray4’, ’gray5’, ....
  • linewidth=4 pour donner une épaisseur en point au trait. La valeur par défaut est 1 point.
  • linestyle permet de spécifier le type de trait. Cette option peut prendre les valeurs suivantes : ’-’ (ligne -par défaut), ’--’ (pointillés), ’-.’ (trait mixte), ’:’ (points), ...
  • marker permet de spécifier la forme des points. Cette option peut prendre les valeurs suivantes : '+' (signes +),'.' (petit ronds), 'o' (gros ronds), 's' (carrés), ...

Exemple :

 1 import matplotlib.pyplot as plt
 2 import numpy as np
 3 
 4 X=np.linspace (-1 ,2 ,50)
 5 def y1(t) : return t-1
 6 def y2(t) : return t**2-t+1
 7 def y3(t) : return t**3 -t **2+t-1
 8 Y1 ,Y2 ,Y3=y1(X) ,y2(X) ,y3(X)
 9 plt.plot (X, Y1,color='b', marker='o')  #ronds bleus
10 plt.plot (X, Y2,linestyle ='--',color='green') #pointillé vert
11 plt.plot (X, Y3,color='red',marker='.') #ligne rouge et petits points
12 plt.show () # affichage du tracé

donne : Exemple 4.svg

Commentaires, axes, légende

  • plt.xlabel(abscisses): affiche la chaîne de caractères ’abscisses’ en dessous de l’axe des abscisses.
  • plt.ylabel(ordonnées): affiche la chaîne de caractères ’ordonnées’ à gauche de l’axe des ordonnées.
  • plt.title(Titre): affiche la chaîne de caractères ’Titre’ en titre.
  • plt.xlim(a,b): précise l’intervalle des abscisses.
  • plt.ylim(a,b): précise l’intervalle des ordonnées.
  • plt.xticks(liste nombres,liste chaîne): permet d’étiqueter une liste de nombre (abscisses) par des caractères. On peut utiliser Latex dans les chaînes de caractères.
  • plt.yticks(liste nombres,liste chaîne): permet d’étiqueter une liste de nombre (ordonnées) par des caractères.
  • plt.axis(equal): impose un repère orthonormé.
  • plt.grid(): dessine des lignes de coordonnées (grille).

Exemple :

 1 import matplotlib.pyplot as plt
 2 import numpy as np
 3 
 4 X=np.linspace (-2* np.pi ,2* np.pi ,100)
 5 Y1=np.cos(X)
 6 Y2=np.sin(X)
 7 plt.title ('Les fonctions sinus et cosinus ')
 8 plt.ylim ( -1.5 ,1.5)
 9 plt.xticks (np.linspace ( -2* np.pi ,2* np.pi ,5) ,[' -2$\pi$ ','-$\pi$ ' ,0 ,'$\pi$ ','2$\pi$ '])
10 plt.plot (X,Y1 , label ='$y =\ cos (x)$')
11 plt.plot (X,Y2 , linestyle ='--',label ='$y =\ sin (x)$')
12 plt.legend ()
13 plt.grid()
14 plt.show ()

donne : Exemple 5.svg


Autres pages de la catégorie "Informatique"

Pages relatives à l'informatique en CPGE scientifiques.

Bases du langage Python

Algorithmes et méthodes numériques‎