Python en Mathématiques - Niveau 2

Le module matplotlib

Le module graphique matplotlib permet de représenter des points dans un repère donc, par extension, de tracer des courbes représentatives.

Cette page présente quelques exemples afin de se familiariser avec les instructions usuelles de ce module.

La liste complète des fonctions disponibles grâce au module matplotlib est disponible sur la documentation officielle.
On pourra aussi télécharger un petit résumé au format .pdf en cliquant ici.
Signalons également un site en français proposant une bonne présentation de ce module matplotlib.

Pour importer d'un seul coup toutes les fonctions du module afin de réaliser des représentations graphiques avec matplotlib, il faudra écrire en en-tête du fichier :


from matplotlib.pyplot import *

Placer un point dans un repère

Le code ci-dessous permet de placer le point de coordonnées (2 ; 3) dans un repère :


# import de la bibliothèque pour nos figures
from matplotlib.pyplot import *

# dessin d'un point de coordonnées (2 ; 3),
# représenté par un carré ( 's' pour square)
# de couleur noir (k)
# de taille 10
plot(2, 3, marker='s', color='k', markersize=10)

# pour lancer la construction de la figure à l'écran
show()
  1. Copier/coller puis exécuter ce code
    • Image à obtenir
  2. Modifier la forme, la couleur, la taille et/ou les coordonnées du point pour bien comprendre les différents paramètres utilisés.

Tracer un nuage de points dans un repère

On représente maintenant un nuage de points. Pour cela, on regroupe les abscisses de ces points dans une liste Python notée X et les ordonnées dans une liste notée Y :


from matplotlib.pyplot import *

X = [0, 1, 2, 3, 4]
Y = [0, 1, 4, 9, 16]

# points de couleur cyan (c), de forme hexagonale (h)
# on ne relie pas les points (linestyle = '')
plot(X, Y, marker='h', color='c', markersize=20, linestyle='')
show()
  1. Copier/coller puis exécuter ce code.
    • Image à obtenir
  2. Modifiez ce programme pour tracer la courbe représentative de la fonction $f$ définie par $f(x) = x^3−27 x$ pour les valeurs de $x$ entières et comprises entre 0 et 7.
    • Image à obtenir
    • Un code possible
    
    from matplotlib.pyplot import *
    
    X = [i for i in range(8)]
    Y = [x**3-27*x for x in X]
    
    # points de couleur magenta (m), de forme circulaire (c)
    # on relie les points par une ligne en tirets (linestyle = '--')
    plot(X, Y, marker='o', color='m', markersize=10, linestyle='--')
    show()
    

Une fonction affine par morceaux

On aimerait obtenir une représentation de la fonction suivante (affine par morceaux et continue) : $$ f(x) = \begin{cases} 2x+1 \text{ pour } x\in [-3; 1] \\ -2x+5 \text{ pour } x\in ]1; 5] \\ x -10 \text{ pour } x\in ]5; 10] \end{cases} $$

Pour cela, on va créer une liste d'abscisse et une liste d'ordonnée et utiliser matplotlib :


from matplotlib.pyplot import *

def f(x) :
    if -3 <= x <= 1 :
        return 2*x+1
    elif 1 < x <= 5 :
        return -2*x+5
    elif 5 < x <= 10 :
        return x-10
	
liste_abscisses =  [-3, 1, 5, 10]
liste_ordonnees = [ f(x) for x in liste_abscisses ]

# construction du graphique :
plot(liste_abscisses, liste_ordonnees, 'g-', linewidth=4)

# pour imposer repère orthonormé :
axis('equal')

# tracé d'une grille en fond :
grid()  

# pour voir le résultat :
show()
  1. Copier/coller puis exécuter ce code.
    • Image à obtenir
  2. Modifiez ce programme pour tracer la courbe en rouge, relier et visualiser les points placés
    • Une réponse

    Il suffit de modifier seulement la ligne 15 :

    
    plot(liste_abscisses, liste_ordonnees, 'r-o', linewidth=2)
    

    En voici la signification : r pour red, - pour relier les points, o pour placer les points des listes.