Cours de Python - Tracer des courbes avec Matplotlib

version 1.0.1, dernière mise à jour le 26 novembre 2021.

   

Table des matières (TdM)

  1. I. Principe de l'utilisation de numpy/matplotlib
    1. Modules numpy et matplotlib, fonctionnalités et import
      1. Généralités
      2. Fonctions mathématiques
      3. Importer Matplotlib
    2. Tracer un graphe simple en x, y
      1. Exercice : Tracé de losange
  1. II. Tracé de courbes
    1. Courbes simples
      1. Exercice : Tracé de courbe représentative
    2. Courbe paramétrique
      1. Exercice : Tracé de courbe paramétrique
    3. Définition du cadre
      1. Paramètres du cadre
      2. Éléments textuels
    4. Forme de la courbe
      1. Styles de ligne et de marqueurs
      2. Largeur et couleur
      3. Exercice : Tracé de courbe représentative (2)
    5. Exemple de tracé à partir d'un fichier CSV
      1. Exercice : Lecture de fichier CSV

Retour au menu

Contenu du cours

I. Principe de l'utilisation de numpy/matplotlib

1. Modules numpy et matplotlib, fonctionnalités et import

a. Généralités

Le module Matplotlib fonctionne en utilisant le module numpy. Celui-ci est spécialisé dans la manipulation de vecteurs, de matrices mais incorpore aussi plusieurs fonctions mathématiques, qui vont nous servir pour illustrer ce cours. Pour l'utiliser, il suffit de faire

import numpy as np

b. Fonctions mathématiques

Numpy définit :

Nous seront aussi utiles certaines constantes, comme np.pi, ou des fonctions comme linspace, qui fonctionnent un peu comme list(range(…)), mais de manière plus explicite : on indique un nombre de départ, un nombre d'arrivée et un nombre de points. Par exemple, linspace(np.pi, 42, 100) génère une liste de 100 nombres régulièrement distribués entre ᴨ et 42.

c. Importer Matplotlib

Il faut aussi importer Matplotlib, en fait souvent une seule de ses parties :

import matplotlib.pyplot as plt

>Retour à la TdM

2. Tracer un graphe simple en x, y

Il suffit de saisir deux listes. Par exemple…

import matplotlib.pyplot as plt

x = [-3, -2, -1, 0, 2, 3]
y=[7, 7, 6, 1, 1, 8]
plt.plot(x,y)

plt.show()

On obtient alors…

courbe illustrative

Mais en fait, comme on peut saisir une liste quelconque, on peut aussi tracer des figures géométriques :

import matplotlib.pyplot as plt

x = [3, 4, 4, 1, 8, 7, 3]
y = [1, 8, 7, 2, 5, 7, 1]
plt.plot(x,y)

plt.show()

polygone

Exercice 1. Tracé de losange

Énoncé
Correction

>Retour à la TdM

II. Tracé de courbes

1. Courbes simples

Comme on l'a vu avec l'exemple simple précédent, il est facile de tracer une fonction affine par morceaux. Pour obtenir des courbes plus « lisses » il faut augmenter le nombre de points. Regardons ce qui se passe avec la fonction cosinus (définie avec le module numpy) et 6, puis 100 points entre -4ᴨ et +4ᴨ  :

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-4*np.pi, 4*np.pi, 6)
y = np.cos(x)
plt.plot(x,y)

plt.show()

Courbe de cosinus avec repliement spectral (pas assez de points)

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-4*np.pi, 4*np.pi, 100)
y = np.cos(x)
plt.plot(x,y)

plt.show()

Courbe de cosinus avec 100 points

Il est de plus facile d'ajouter une nouvelle courbe, puisqu'il suffit de créer une nouvelle liste et de l'afficher :

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-4*np.pi, 4*np.pi, 100)
y1 = np.cos(x)
y2 = np.sin(x)
plt.plot(x,y1)
plt.plot(x,y2)

plt.show()

Courbes de cosinus et de sinus

Par défaut, matplotlib attribue des couleurs différentes prédéfinies aux deux courbes.

Exercice 1. Tracé de courbe représentative

Énoncé
Correction

>Retour à la TdM

2. Courbe paramétrique

On peut très facilement construire une courbe paramétrique. Par exemple, pour tracer une ellipse on pourra faire…

import numpy as np
import matplotlib.pyplot as plt

theta = np.linspace(0, 2*np.pi, 100)
x = np.cos(theta)
y =2* np.sin(theta)
plt.plot(x,y)

plt.show()

On obtient alors…

Ellipse

Cette courbe paramétrique a un problème. En effet, elle devrait être deux fois plus haute que large, et c'est ici le contraire. Cela est dû au fait que le repère n'est pas orthonormé. On corrige cela avec l'instruction axis("equal"), qui permet d'assurer que les échelles sont les mêmes en abscisses et en ordonnées. On écrira plt.axis("equal") :

import numpy as np
import matplotlib.pyplot as plt

theta = np.linspace(0, 2*np.pi, 100)
x = np.cos(theta)
y =2* np.sin(theta)
plt.axis("equal")
plt.plot(x,y)

plt.show()

Ellipse dans un repère orthonormé

Exercice 1. Tracé de courbe paramétrique

Énoncé
Correction

>Retour à la TdM

3. Définition du cadre

a. Paramètres du cadre

Jusqu'à présent, nous nous sommes contentés de conserver les réglages par défaut pour l'apparence du cadre du graphique. On peut bien évidemment le paramétrer.

b. Éléments textuels

>Retour à la TdM

4. Forme de la courbe

a. Styles de ligne et de marqueurs

On peut modifier le tracé de la courbe, en agissant sur sa forme elle-même (continue, pointillés…) ou bien les marqueurs des points. Pour cela, on précise la mise en forme juste après avoir indiqué ce que l'on trace lors de l'appel à plt. Par exemple, on écrira plt.plot(x, y, "--") pour tracer une courbe avec des tirets, ou plt.plot(x, y, "-") pour une ligne continue, et des marqueurs en forme de cercle. On peut aussi utiliser le mot-clef linestyle, et les exemples précédents s'écriront respectivement plt.plot(x, y, linetyle="dashed") et plt.plot(x, y, linestyle="solid"). Les options possibles sont au nombre de 4 pour les lignes :

Chaîne

Style de ligne

- ou linestyle="solid"

Ligne continue

-- ou linestyle="dashed"

Tirets

: ou linestyle="dotted"

Pointillés

-. ou linestyle="dashdot"

Tirets et points

Les quatre types de lignes

Il y a beaucoup plus de styles de marqueurs. Les plus courants sont . pour les points, s pour les carrés, o pour les cercles, * pour les étoiles, x pour les x, + pour les croix…

Quelques types de marqueurs

On combine ces caractères pour préciser quel type de ligne on souhaite. On écrira ainsi plt.plot(x, y, "--o") pour obtenir une ligne avec des tirets, dont les points sont marqués par des cercles. Si on utilise la syntaxe avec le mot-clef linestyle, alors il faut procéder de même avec les marqueurs, et on écrira par exemple plt.plot(x, y, linestyle="dashed", marker="o") pour obtenir le même résultat.

b. Largeur et couleur

La largeur de la ligne peut être spécifiée avec le mot-clef linewidth. On écrira par exemple plt.plot(x, y, linewidth=2) pour indiquer une largeur de ligne de 2 pixels.

Quelques largeurs de :ignes

La couleur est précisée avec le mot-clef color. On écrira par exemple plt.plot(x, y, color="blue") pour tracer une courbe en bleu. Les couleurs sont les mêmes qu'avec le langage HTML . Si on utilise la syntaxe compacte, on peut faire précéder le style de ligne par une lettre abrégeant le nom de la couleur. Par exemple, pour tracer une ligne continue rouge, on écrira plt.plot(x, y, "r-").

Exercice 1. Tracé de courbe représentative (2)

Énoncé
Correction

>Retour à la TdM

5. Exemple de tracé à partir d'un fichier CSV

Il n'y pas de difficulté majeure pour tracer une courbe à partie d'un fichier CSV ; il suffit juste d'attribuer les valeurs dans les bonnes listes. Par exemple, si la première colonne du fichier contient les abscisses et la seconde les ordonnées, on écrira…

import csv

with open("valeurs.csv", "r", newline="") as fichier :
  lignes = csv.reader(fichier)
  for ligne in lignes :
    x.append(liste[0])
    y.append(liste[1])
plt.plot(x, y)

plt.show()

Exercice 1. Lecture de fichier CSV

Énoncé
Correction

>Retour à la TdM

Historique de ce document

Conditions d'utilisation et licence

Creative Commons License
Cette création est mise à disposition par Gilles Chagnon sous un contrat Creative Commons.

Retour au menu