Python Matplotlib – Tuto 1



La librairie Matplotlib

La librairie Python matplotlib  est une librairie qui vous permet de faire de la visualisation de données 2D de manière extrêmement pratique. Elle n’est pas indispensable, bien sur, mais dés lors que l’on aborde des projets de Machine Learning elle peut s’avérer très pratique. L’objectif de ce tuto est de vous mettre le pied à l’étrier avec cette fameuse librairie.

Note: Cette librairie vient avec la distribution Anaconda.

Les types de graphes supportés sont nombreux, aussi je ne les détaillerais pas tous dans ce tuto. retenez juste que cette librairie couvre de nombreux types de graphes : lines, courbes, histogrammes, points, barres, camembert (pie), tableaux, polaires, etc.

Ce tuto vous expliquera comment faire des courbes et histogrammes, pour les autres je vous suggère d’aller voir la documentation sur le site officiel ici.

Pour le jeu de données utilisé, c’est simplement celui du titanic sur Kaggle.com : train.csv.

Tracer des courbes

Pour commencer il faut évidemment déclarer la librairie Python avec la commande import. Par usage on choisit l’alias plt. On en profite pour récupérer le jeu de données que l’on va limiter aux 5 premières lignes afin d’avoir des graphes lisible (pour ce tuto) :

 
import pandas as pd import matplotlib.pyplot as plt 
titanic = pd.read_csv("./data/train.csv")[:5] 

Voilà le résultat :

Libellés sur les axes

L’ajout de libellés se fait via les commandes xlabel et ylabel :

 
plt.ylabel('Prix des billets')
plt.xlabel('Passagers')
plt.show()

Voilà le résultat :

Affectation des données d’abscisse

Jusque là nous n’avons donné que des valeurs en ordonnées, précisons les valeurs en abscisses (N° de passager) :

 
plt.ylabel('Prix des billets')
plt.xlabel('Passagers')

Voilà le résultat :

Empilement de courbes

Maintenant il est souvent utile d’empiler des courbes afin de mieux analyse les données, c’est chose très simple avec matplotlib en empilant les appels à la fonction plot:

 
plt.plot(titanic.PassengerId, titanic.Fare)
plt.plot(titanic.PassengerId, titanic.Survived)
plt.plot(titanic.PassengerId, titanic.Age)
plt.ylabel('Prix des billets')
plt.xlabel('Passagers')

Voilà le résultat des 3 courbes sur le même graphe:

Changer d’aspects

Une fois de plus la librairie nous facilite la vie et nous permet de changer de couleur, de trait ou d’épaisseur de trait en un clin d’oeil simplement en précisant des options dans l’appel à la fonction plot:

Voici les codes/options disponibles:

  • Codes des Courbes : ou ou -.
  • Codes des couleurs : b g r c m y k w
  • Largeur des traits avec linewidth
plt.plot(titanic.PassengerId, titanic.Fare, "k-.", linewidth=5)
plt.plot(titanic.PassengerId, titanic.Survived, "r", linewidth=1)
plt.plot(titanic.PassengerId, titanic.Age, "c", linewidth=10)
plt.ylabel('Prix des billets')
plt.xlabel('Passagers')

Voilà le résultat:

Ajouter une grille

Tout simplement en ajoutant un appel à la fonction grid() :

plt.grid(True)

Voilà le résultat:

Enjoliver son graphe

La librairie matplotlib dispose pour cela de plusieurs fonctions:

  • text() et annotate() pour des ajout de texte dans le graphe (ajoutons par exemple un point précisant le prix maximum)
  • legend() pour ajouter la légende
  • etc.
plt.text(2,70, '  Prix max !')
plt.legend() 

Voilà le résultat:

Créer des grilles de graphes

De la même qu’il est possible d’empiler plusieurs courbes dans le même graphe, il est possible de créer des grilles de graphes; C’est très pratique pour empiler des graphes qui doivent être regardés ensemble mais qui n’ont pas les mêmes ordres de grandeurs en matière d’abscisse et d’ordonnées. Pour se faire on utilise l’instruction subplot() qui va décrire la grille. Cette commande prend plusieurs arguments ;

  1. Nombre de lignes de la graille de graphe
  2. Nombre de colonnes de la grillede graphe
  3. Index du graphe dans la grille
  4. Options (ici on a précisé une couleur de fond)

Dans l’exemple ci-dessous on définit une grille de 1 colonne et 2 lignes :

plt.subplot(1, 2, 1)
plt.plot(titanic.PassengerId, titanic.Fare, "k-.", linewidth=5)
plt.subplot(1, 2, 2, facecolor='y')
plt.plot(titanic.PassengerId, titanic.Age, "c", linewidth=10)

Note: on précise en outre que le second graphe ait un fond jaune

Voilà le résultat:

Le notebook Jupyter est disponible ici.

Quelques autres diagrammes disponibles

Histogramme

L’histogramme est un graphe bien pratique car il vous présente en cumulé (automatique) votre jeu de données. C’est très utile par exemple pour voir les fréquences de distribution de vos valeurs :

plt.hist(titanic.Fare)

Attention: cette fonction ne marche pas si vous avez des étiquettes (abscisses) de type caractères. Pour y remédier il faut utiliser la fonction bar() en effectuant le comptage « manuellement ».

Vous pouvez regarder ces deux fonctions Python à titre d’exemple de mise en oeuvre sur Gist :

histogramme simple

histogramme double

Diagramme à barre

Visuellement c’est un histogramme, mais à ce ci près que comme pour les courbes (ci-dessus) c’est vous qui précisez les données (abscisse et ordonnée) :

plt.bar(titanic.PassengerId, titanic.Fare, color="b")

Diagramme camenbert (pie)

Très utile pour visualiser la part de chaque donnée sur un « ensemble fini » (comme des pourcentages) :

plt.pie(titanic.Fare, autopct='%1.1f%%', startangle=180)

Diagramme de points

Pour simplement placer des distributions de points :

plt.scatter(titanic.PassengerId, titanic.Fare)

Cumuler des diagrammes en un seul

Comme nous l’avons vu précédemment, il suffit maintenant d’empiler les appels à plot(), scatter(), bar(), etc.

plt.scatter(titanic.PassengerId, titanic.Fare)
plt.bar(titanic.PassengerId, titanic.Fare, color="y")
plt.plot(titanic.PassengerId, titanic.Age, "c", linewidth=10)

Le notebook Jupyter est disponible ici.

Résumé

La documentation matplotlib est disponible ici.

Récapitulatif des fonctions de diagrammes de ce tuto :

  • plot() : pour tracer des courbes
  • scatter() ; pour tracer des points
  • bar() : pour des diagrammes à barre
  • pie() ; pour des camenbert
  • hist() ; pour les histogrammes


A propos de Benoit Cayla

En plus d'être un spécialiste des données et processus d'entreprise, j'aime passer le plus clair de mon temps à l'extérieur, à jardiner par exemple ou simplement à aller dans le bois avec mes enfants. J'adore aussi le VTT que je pratique chaque semaine avec mes amis. Quand je dois rester à l'intérieur, j'aime améliorer ma maison. Bricoler me permet ainsi de libérer ma créativité d'ingénieur. Et, si je n'ai rien à réparer ou créer, je passe mon temps libre à explorer les dernières avancées technologiques dans le monde de l'IA et du RPA.

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée.

cinq × deux =

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Commentaire sur “Python Matplotlib – Tuto