La bibliothèque matplotlib


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

Pour tracer des graphes y=f(x) avec les points reliés, où x et y sont fournis par des tableaux numpy, il faut importer le module pyplot de matplotlib (numpy étant aussi utilisé, il devra bien-sûr être également importé).

 

Nous allons commencer par un exemple simple, le tracé une droite d’équation : y = ax+ b 

En premier, il faut créer un tableau numpy d’entiers, par exemple de 0 à 9, correspondant aux abscisses du graphe (x=np.arange(10)).

On applique la fonction de la droite à ce tableau pour obtenir un autre tableau numpy d’entiers correspondant aux ordonnées du graphes (y= a*x + b)

Résultats dans le fenêtre Python Shell :


Le graphe est créé avec l’instruction plt.plot(x,y) et affiché avec plt.show() :

 

Selon le même principe, nous allons maintenant tracer une sinusoïde :

Dans cet exemple, le tableau des abscisses contient 50 éléments également espacés de 0 à 2 . On applique à ce tableau, la fonction sinus, pour obtenir le tableau des ordonnées de 50 éléments également (y=np.sin(x)).

Résultats dans le fenêtre Python Shell :

Le graphe est créé avec l’instruction plt.plot(x,y) et affiché avec plt.show() :

 

Les graphes ainsi obtenus peuvent être mis en forme :

Domaine des axes des abscisses et des ordonnées :

Il est possible fixer indépendamment les domaines des abscisses et des ordonnées en utilisant les fonctions xlim() et ylim().

Ce qui donne :

 

Ajout d’un titre :

On peut ajouter un titre grâce à l’instruction title() :

plt.title(”titre”)

Ajout d’une légende :

L’instruction plt.legend() ajoute la légende au graphe définie lors de la création du graphe :

plt.plot(x,y, ”legende”)

Ajout d’étiquettes sur les axes :

Les fonctions xlabel() et ylabel() ajoutent respectivement des étiquettes sur les axes des abscisses et des ordonnées.

plt.xlabel(”abscisses”)

plt.ylabel(”ordonnees”)

 

Exemple de mise en forme :

Ce qui donne:

 

Il est possible d’afficher plusieurs courbes sur le même graphe. Pour chaque courbe, il suffit de définir des tableaux numpy correspondant aux valeurs des ordonnées des caractéristiques y=f(x).

Exemple : Affichage de deux sinusoïdes avec un déphasage de π/2

Ce qui donne:

 

Style des courbes

Le style des courbes est modifiable en précisant la couleur, le style de ligne et les symboles des points (« marker ») en ajoutant une chaîne de caractères à l’instruction de création du graphe, de la façon suivante :

plot( x, y, ”couleur symbole style de ligne”, label=”label”)

. couleurs

Les chaînes de caractères suivantes permettent de définir la couleur :


. Styles de ligne

Les chaînes de caractères suivantes permettent de définir le style de ligne :


. Symboles

Les chaînes de caractères suivantes permettent de définir le symbole (« marker ») :


Remarque
 :

Pour une représentation graphique en nuage de points, il suffit d’indiquer un symbole sans préciser un style de ligne.

Exemples de styles de courbe :

Ce qui donne:

 

style de graphe :

Le style du graphe est modifiable avec l’instruction :

pyplot.style.use(‘nom du style’)

Voici quelques styles de graphes de matplotlib :

Exemple : Style ‘’seaborn-whitegrid’’

Ce qui donne :

 

Disposition et graphes multiples :

Il est possible d’afficher plusieurs graphes sur la même figure en créant un objet figure dont on peut préciser la taille en pouce :

fig = pyplot.figure(figsize = (10, 10))

Les graphes dans cette figure sont modélisés par des objets axes. Pour créer un graphe dans la figure fig, on crée un objet axe à l’aide de la fonction subplot() en spécifiant le nombre de lignes et le nombre de colonnes dans la figure, ainsi que le numéro du graphe :

ax1 = pyplot.subplot(211)

ax2 = pyplot.subplot(212)

Ces instructions vont créer 2 lignes et 1 colonne dans la figure, les 2 lignes contenant chacune 1 graphe :

Ou : ax1 = plt.subplot(121)

        ax2 = plt.subplot(122)


1 ligne, 2 colonnes

 

Ou :  ax1 = plt.subplot(221)

         ax2 = plt.subplot(222)

         ax3 = plt.subplot(223)

         ax4 = plt.subplot(224)


2 lignes, 2 colonnes

Et ainsi de suite…

Les graphes sont créés avec la fonction plot() appliquée aux axes définis :

ax1.plot(x, y)

ax2.plot(x, y2)

et affichés avec la fonction show() appliquée à la figure :

fig.show()

 

La définition des styles de courbes reste le même :

axe.plot( x, y, « couleur symbole style de ligne », label= »label »)

et l’affichage de la légende se fait sur l’objet axe :

axe.legend()

 

La mise en forme des graphes (titre, échelles, étiquettes des axes) est cependant légèrement différent :

– Ajout d’un titre sur un objet axe :

axe.set_title(« titre »)

– Définition des échelles des axes :

axe.set_xlim(x1, x2)

axe.set_ylim(y1, y2)

– Ajout d’étiquettes sur les axes :

axe.set_xlabel(« labelx »)

axe.set_ylabel(« labely »)

 

Exemples :

. 2 graphes sur 1 ligne / 2 colonnes :

Ce qui donne:

 

. 2 graphes sur 2 lignes / 1 colonne :

Le code est identique à celui de l’exemple précèdent seul la taille de la figure et la disposition des graphes changent :

fig = plt.figure(figsize = (8, 8))

ax1 = plt.subplot(211)

ax2 = plt.subplot(212)

Ce qui donne:

 

. 4 graphes sur 2 lignes / 2 colonnes :

Ce qui donne:

 

Tout ce qui vient d’être vu n’est qu’une infime partie des possibilités que peut offrir matplotlib. Pour plus d’informations sur matplotlib, de nombreux tutoriels sont disponibles sur le site :

https://matplotlib.org/3.1.1/tutorials/