La bibliothèque $\mathtt{matplotlib.pyplot}$

Retour au tutoriel général

La documentation complète est disponible à l'adresse https://matplotlib.org/. Une bonne présentation est disponible à l'adresse http://www.python-simple.com/python-matplotlib/matplotlib-intro.php

En fait ce résultat est trompeur. Ce que l'on trace effectivement ce sont des points dans le plan. La fonction $\mathtt{plot}$ se charge de relier ces points. Un tracé plus approprié dans ce cas serait

ou des diagrammes en secteurs (i.e. des camenberts)

Un nuage de points peut être tracé avec la fonction $\mathtt{scatter}$.

Dans le diagramme ci-dessus nous n'avons pas précisé quel est le découpage de l'intervalle $[0,14]$ qu'il faut considérer. Par défaut, pour le calcul des effectifs de chaque classe, l'intervalle considéré $[\min, \max]$ est découpé en $10$ sous-intervalles. Il est donc préférable de préciser l'intervalle considéré avec le paramètre $\mathtt{range}$ et le nombre de sous-intervalles avec l'argument $\mathtt{bins}$.

L'appel de la fonction $$ \mathtt{plt.hist(x , range=[a,b], bins=n)} $$ trace le diagramme des effectifs associé au découpage de l'intervalle $[a,b]$ donné par $$ \left[ a , a+ \frac{b-a}{n} \right[, \quad \left[ a+ \frac{b-a}{n}, a + 2 \frac{b-a}{n} \right[, \quad \dots, \quad \left[ a+ (n-1) \frac{b-a}{n} , b \right].$$ Noter que tous les intervalles sont ouverts à droite, sauf le dernier qui est fermé.

Comparer le diagramme précédent avec les deux suivants.

On peut aussi spécifier directement les bornes du découpage en sous-intervalles:

Le dernier diagramme ne contient que $3$ sous-intervalles : $$ [10,12[, \quad [12, 13.5[ \quad \text{ et } \quad [13.5, 16]. $$ Dans le premier on prend donc en compte les occurrences de $10$ et $11$ ; dans le deuxième les occurrences de $12$ et $13$ ; dans le troisième seulement les occurrences de $14$.

Attention. Pour être précis, les tracés précédents ne sont pas des histogrammes à proprement parler. Dans un histogramme, c'est l'aire du rectangle qui donne les informations (ce qui est particulièrement important lorsque les rectangles ont des largeurs différentes). Pour cela, on utilise l'option $\mathtt{density=True}$ qui permet de tracer les histogrammes des fréquences : l'aire totale des rectangles est alors égale à $1$.

ou des polygones

Selon l'éditeur utilisé (et ses paramètres), il est possible de devoir modifier le back-end en tapant la commande $\mathtt{\%matplotlib}$ $\mathtt{qt}$ pour visualiser sans enregistrer la vidéo obtenue.

Pour revenir à l'affichage dans la console IPython : $\mathtt{\%matplotlib}$ $\mathtt{inline}$

La fonction $\mathtt{ArtistAnimation}$ permet de faire un effet d'animation à partir d'une liste d'images.

Les deux exemples ci-dessous plus complets sont issus de la documentation de $\mathtt{matplotlib}$.

Le premier anime une fonction "point par point" en utilisant $\mathtt{FuncAnimation}$. La fonction $\mathtt{update}$ indique ce qu'il faut rajouter d'une frame à l'autre.

Le second anime une liste d'images stockées dans $\mathtt{ims}$.