2022-10-04 10:51 Temps de lecture : 22 min

Une introduction à Matplotlib en Python

Matplotlib se révèle être un outil de création graphique Python de premier choix, privilégié par les spécialistes du Machine Learning pour la production de visualisations tant statiques qu'interactives.

Qu'est-ce que Matplotlib ?

L'origine de Matplotlib remonte à 2003, sous l'impulsion de John D. Hunter. Sa publication initiale date du 8 mai 2021 et elle est actuellement à la version 3.4.2.

Cette bibliothèque est principalement codée en Python, avec des parties en Objective C et JavaScript pour assurer une compatibilité multiplateforme.

Matplotlib s'appuie sur NumPy, une extension numérique de Python, qui renforce sa position en tant qu'alternative open source viable et la rend préférable à MATLAB.

Dans le cadre des applications GUI Python, Matplotlib permet de générer des représentations graphiques statiques via son API orientée objet.

Les utilisateurs peuvent créer des visualisations de données, allant des nuages de points aux histogrammes, en passant par les diagrammes à barres, les secteurs, les graphiques linéaires et en boîtes, à l'aide de quelques lignes de code Python.

Matplotlib peut être utilisé dans divers environnements tels que l'interpréteur Python, Jupyter Notebook, Jupyter Lab, ainsi que dans des IDE tels que Pycharm ou Anaconda, et même sur des serveurs d'applications web comme Flask et Django, sur différentes plateformes.

À l'instar de MATLAB, il offre un contrôle étendu sur l'apparence des graphiques, que ce soit au niveau des polices, des lignes, des couleurs ou des styles.

Après cette introduction concise à la bibliothèque Matplotlib en Python, voyons comment la configurer sur votre système.

Configuration de l'environnement Matplotlib

À l'image des autres bibliothèques Python, Matplotlib et ses dépendances peuvent être installés sur tous les systèmes d'exploitation à l'aide du gestionnaire de paquets pip.

Il est indispensable d'avoir Python et pip déjà installés sur votre machine avant de procéder.

Les commandes suivantes permettent de vérifier si Python et pip sont déjà en place et d'afficher leurs versions.

Vérification de l'installation de Python

python --version

Vérification de l'installation de pip

pip -V

Installation de Mathplotlib

La commande ci-dessous permet d'installer le paquet Matplotlib depuis le Python Package Index (PyPI).

python -m pip install matplotlib

Cette commande téléchargera et installera les paquets nécessaires pour Matplotlib. Un message de confirmation d'installation réussie devrait apparaître une fois le processus terminé.

Pour vous assurer que Matplotlib est correctement installé, saisissez la commande ci-après. Elle affichera la version de Matplotlib dans votre invite de commande.

import matplotlib
matplotlib.__version__

Pour les développeurs souhaitant installer Matplotlib depuis les sources, il est nécessaire d'avoir un compilateur adapté, ainsi que les dépendances, scripts d'installation, fichiers de configuration et correctifs appropriés.

Toutefois, cette installation manuelle peut être complexe, surtout pour les nouveaux utilisateurs de Matplotlib. Il est donc souvent préférable d'opter pour l'installation via la commande pip en une seule ligne, qui permet de mettre en place la bibliothèque en quelques instants. 🤔

Une fois Matplotlib installé, importez le paquet dans votre environnement pour accéder à ses fonctionnalités.

Options de traçage de Matplotlib

Matplotlib offre une grande variété d'options de traçage pour visualiser les données, ainsi que des possibilités de personnalisation des graphiques à travers divers thèmes, couleurs et palettes.

Les options de traçage incluent :

#1. Diagrammes à barres

Les diagrammes à barres, également appelés graphiques à colonnes, sont particulièrement adaptés pour comparer quantitativement des valeurs au sein d'une même catégorie.

Matplotlib représente ce type de graphique à l'aide de barres rectangulaires, dont la longueur ou la hauteur représente la valeur proportionnelle. Les barres peuvent être disposées horizontalement ou verticalement.

La fonction `plt.bar()` de Matplotlib est utilisée pour la création de ce type de graphique.

Plusieurs autres fonctions peuvent être utilisées pour personnaliser le graphique. Par exemple, `plt.xlabel()` et `plt.ylabel()` permettent d'étiqueter les axes x et y, respectivement. `plt.title()` donne un titre au graphique, tandis que `plt.savefig()` l'enregistre. La fonction `plot.show()`, qui est essentielle, affiche le tracé.

#2. Diagrammes circulaires

Les diagrammes circulaires, également connus sous le nom de camemberts, permettent de visualiser la distribution proportionnelle d'éléments au sein d'une même catégorie.

Les diagrammes circulaires affichent les données en pourcentages. L'ensemble du cercle représente 100% des données, et chaque part du camembert représente une proportion de ces données.

Matplotlib utilise la fonction `plt.pie()`, qui ajuste les paramètres du graphique. Des paramètres comme `autopct`, qui affiche la valeur du secteur avec une décimale, sont très pratiques pour la création de diagrammes circulaires.

Les entreprises utilisent souvent les diagrammes circulaires pour présenter des informations pertinentes telles que les opérations, les ventes ou les allocations de ressources.

#3. Histogrammes

Un histogramme illustre la distribution de données numériques. Il utilise des intervalles continus pour regrouper les données en sections distinctes.

La principale différence entre un histogramme et un diagramme à barres réside dans la nature des données qu'ils traitent. Les histogrammes se focalisent sur des données continues, tandis que les diagrammes à barres représentent des données catégorielles.

Matplotlib fait appel à la fonction `hist()`, qui prend en entrée un tableau de valeurs aléatoires ou définies pour créer l'histogramme.

#4. Graphiques linéaires

Les graphiques linéaires sont utiles pour visualiser la relation entre deux variables, qui peuvent être numériques ou catégorielles, représentées sur les axes X et Y.

Les tracés linéaires sont particulièrement pertinents pour suivre l'évolution de données au cours du temps.

#5. Nuages de points

Les nuages de points indiquent la relation, incluant la corrélation, entre différentes variables dans un ensemble de données. Ils aident également à identifier des valeurs aberrantes.

Les nuages de points emploient des points pour illustrer la relation entre les variables, montrant comment une modification de l'une peut affecter l'autre.

Comment créer des graphiques avec Matplotlib

Matplotlib utilise différentes fonctions pour créer différents types de graphiques, nécessitant un nombre limité de lignes de code.

Voyons ci-dessous comment créer différents types de graphiques à l'aide des fonctions disponibles dans Matplotlib.

#1. Diagramme à barres avec Matplotlib

Les diagrammes à barres, comme expliqué précédemment, représentent les catégories de données au moyen de barres et d'axes, mettant en évidence une comparaison entre les catégories sur un axe, et leurs valeurs correspondantes sur l'autre axe.

La fonction `bar()` dans Matplotlib accepte divers arguments pour définir la disposition des barres, comme indiqué ci-dessous.

plt.bar(x, y, height, width, bottom, align)

Les paramètres `x` et `y` représentent les coordonnées x et y des barres dans le graphique. Le paramètre `width` représente la largeur de la barre, tandis que `height` indique sa hauteur.

Par exemple, représentons le nombre de chiens et de chats dans un refuge pour animaux nommé x.

import matplotlib.pyplot as plt
import numpy as np

x = ["Chats", "Chiens"]
plt.xlabel("Chats et Chiens dans un refuge")
plt.ylabel("Nombre d'animaux dans le refuge")
plt.title("Nombre de chats et de chiens dans le refuge x")
y = [300, 350]
plt.bar(x, y, color="black", width = 0.5)

Production :

Sortie du diagramme à barres avec Matplotlib

Comme l'exemple ci-dessus l'illustre, vous pouvez spécifier la couleur des barres grâce à l'attribut `color`. De plus, `plt.xlabel` et `p.ylabel` nomment respectivement les axes x et y, et `plt.title` nomme le graphique.

#2. Création d'un diagramme circulaire

Matplotlib utilise la fonction `pie()`, intégrée au module `pyplot`, pour tracer un diagramme circulaire. Cette fonction prend en entrée les données à représenter sous forme de tableau.

Syntaxe :

matplotlib.pyplot.pie(data, explode=None, labels=None, colors=None, autopct=None, shadow=False)

Le paramètre `colors` définit la couleur des parts du camembert. Vous pouvez utiliser un tableau de valeurs pour attribuer une couleur à chaque part.

Pour enrichir les détails de chaque part, l'argument `autopct` ajoute le pourcentage numérique que chaque part représente, en utilisant la notation de formatage String de Python. L'argument `explode` accepte un tableau de valeurs (en commençant par 0.1) qui définit la distance entre la part et le centre du diagramme.

Illustrons la création d'un diagramme circulaire qui montre le pourcentage des ressources allouées à un projet spécifique.

import matplotlib.pyplot as plt
import numpy as np

y = np.array([25, 10, 45, 20])
mylabels = ["w", "x", "y", "z"]
explodevalues = [0.1, 0.2, 0, 0]
colors = ['tab:blue', 'tab:green', 'tab:orange', 'tab:red']
plt.title("Ressources allouées pour un projet aléatoire")
plt.pie(y, labels = mylabels, colors=colors,explode = explodevalues, autopct="%1.1f%%", shadow = True)
plt.show() 

Production :

Sortie du diagramme circulaire avec Mathplotlib

Ce graphique circulaire illustre quatre parts identifiées par les étiquettes w, x, y et z. Les valeurs d'éclatement déterminent l'éloignement des parts par rapport au centre du diagramme.

Dans notre exemple, x est plus éloigné car sa valeur d'éclatement est supérieure aux autres. L'attribut `shadow` ajoute un effet d'ombre au camembert, tandis que `autopct` définit le pourcentage relatif de chaque part par rapport à l'ensemble du cercle.

#3. Création d'un histogramme

Dans un histogramme, une série d'intervalles est utilisée pour représenter la plage des valeurs sur l'axe des abscisses. L'axe des ordonnées, quant à lui, représente les informations de fréquence.

Contrairement à d'autres tracés, la création d'un histogramme avec Matplotlib suit une série d'étapes prédéfinies qu'il faut respecter.

Ces étapes comprennent :

  • Création d'une série d'intervalles à partir de l'ensemble de valeurs de données. La fonction `np.random.normal()` peut être utilisée pour générer des valeurs aléatoires.
  • Distribution des valeurs dans les différents intervalles de la plage.
  • Comptage des valeurs contenues dans chaque intervalle.
  • Utilisation de la fonction `matplotlib.pyplot.hist()` pour créer l'histogramme.

La fonction `hist()` accepte plusieurs paramètres, notamment :

`x` – Représente la séquence du tableau.

`bins` – Paramètre optionnel qui représente les intervalles de variables sans chevauchement, pouvant contenir des entiers ou une séquence de chaînes de caractères.

`range` – Définit les limites supérieure et inférieure des bacs.

`align` – Contrôle l'alignement de l'histogramme. Les valeurs possibles sont à gauche, à droite ou au centre.

`color` – Définit la couleur des barres.

`rwidth` – Définit la largeur relative des barres de l'histogramme par rapport à celle des bacs.

`log` – Détermine si une échelle logarithmique doit être utilisée sur l'axe de l'histogramme.

L'exemple suivant trace un histogramme à partir de valeurs définies.

from matplotlib import pyplot as plt

x = [22, 40, 87, 5, 43, 30, 56,73, 55, 54, 11, 20, 51, 5,  50, 60, 70, 80]

plt.hist(x)
plt.title("Exemple d'histogramme")
plt.xlabel("Axe x")
plt.ylabel("Fréquence")
plt.show()

Production :

Sortie de l'histogramme avec Mathplotlib

#4. Graphique linéaire avec Matplotlib

Matplotlib utilise une sous-bibliothèque appelée `pyplot`, qui contient de nombreuses fonctions utiles pour l'implémentation de graphiques.

La fonction `plot()`, fournie par `pyplot`, sert à tracer des graphiques linéaires et d'autres types de tracés basés sur des lignes, tels que les courbes et les tracés multilignes. La création de ces différents types dépend des valeurs qui sont transmises à l'axe des ordonnées.

Lors de la création d'un graphique, il est nécessaire d'importer `matplotlib.pyplot` et `Numpy`, qui permettent de dessiner les graphiques. La méthode `plot(x,y)` crée le graphique linéaire en utilisant des valeurs aléatoires pour les arguments x et y.

Il est aussi possible de transmettre un argument étiquette pour nommer le graphique. La fonction `title` permet de définir le titre du graphique, tandis que les fonctions `xlabel` et `ylabel` permettent de nommer les axes. Enfin, la fonction `show()` affiche le graphique.

Par exemple :

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 5, 10)

y = 3*x + 2
plt.title("Exemple de graphique linéaire")
plt.xlabel("Axe x")
plt.ylabel("Axe y")
plt.plot(x, y)
plt.show()

Résultat :

Sortie du tracé linéaire avec Mathplotlib

L'attribut `np.linspace` renvoie sur le graphique un ensemble de nombres régulièrement espacés sur un intervalle donné pour les valeurs x. Cela créera un tableau de 10 valeurs comprises entre 0 et 5. Les valeurs y sont obtenues à partir de l'équation utilisant les valeurs correspondantes de x.

Création de nuages de points

Matplotlib utilise la méthode `scatter()` pour créer ce type de tracé. Cette méthode prend en compte les paramètres suivants.

matplotlib.pyplot.scatter(x_axis_data, y_axis_data, s=None, c=None, marker=None, cmap=None, vmin=None, vmax=None, alpha=None, linewidths=None, edgecolors=None) 

Les paramètres `x_axis_data` et `y_axis_data` sont obligatoires, contrairement aux autres paramètres qui sont optionnels et peuvent avoir `None` comme valeur. `x_axis_data` définit un tableau de données pour l'axe des x, et `y_axis_data` un tableau pour l'axe des y.

Voici un exemple de nuage de points dans matplotlib :

import matplotlib.pyplot as plt
 
x =[15, 17, 18, 27, 22, 27, 32, 14, 11, 12, 29, 16]
 
y =[19, 16, 17, 18, 10, 26, 13, 27, 14, 18, 17, 35]
plt.title("Exemple de nuage de points")
plt.xlabel("Variable x")
plt.ylabel("Variable y")
plt.scatter(x, y, c ="green")
 
# Affichage du graphique
plt.show()

Le résultat ressemblera à :

Sortie du nuage de points avec Mathplotlib

Qu'est-ce que `subplot()` dans matplotlib

La fonction `subplot()` permet de dessiner plusieurs tracés sur une même figure Matplotlib, facilitant ainsi la visualisation et la comparaison de plusieurs graphiques.

Cette fonction renvoie un tuple avec trois arguments : les lignes, les colonnes (respectivement premier et deuxième argument) et l'index du tracé actuel (troisième argument).

Les lignes et les colonnes définissent la disposition du graphique Matplotlib.

Par exemple, `plt.subplot(2, 1, 1)` tracera une figure Matplotlib avec deux lignes et une colonne, et ce tracé sera le premier. `plt.subplot(2, 1, 2)` affichera un deuxième tracé avec deux lignes et une colonne.

Tracer ces deux graphiques les affichera l'un au-dessus de l'autre, comme dans l'exemple ci-dessous.

import matplotlib.pyplot as plt
import numpy as np

#plot 1:
x = np.array([2, 4, 6, 8])
y = np.array([3, 6, 9, 12])

plt.subplot(2, 1, 1)
plt.plot(x,y)

#plot 2:
x = np.array([3, 6, 9, 12])
y = np.array([1, 2, 3, 4])

plt.subplot(2, 1, 2)
plt.plot(x,y)

plt.show()

La sortie de cet exemple ressemblera à l'image ci-dessous.

Dans un autre exemple, nous allons utiliser la fonction `subplot` pour tracer deux figures avec une ligne et deux colonnes. Cela affichera les tracés côte à côte.

import matplotlib.pyplot as plt
import numpy as np

#plot 1:
x = np.array([2, 4, 6, 8])
y = np.array([3, 6, 9, 12])

plt.subplot(1, 2, 1)
plt.plot(x,y)

#plot 2:
x = np.array([3, 6, 9, 12])
y = np.array([1, 2, 3, 4])

plt.subplot(1, 2, 2)
plt.plot(x,y)

plt.show()

L'exemple ci-dessus affichera le résultat suivant.

N'est-ce pas intéressant et interactif ? 😃

Dernières remarques

Matplotlib est une bibliothèque de visualisation très prisée en Python. Son interactivité et sa simplicité d'utilisation, même pour les débutants, en font un excellent outil pour créer des graphiques en Python.

Cet article a examiné les exemples des différents types de graphiques que les fonctions de Matplotlib peuvent créer, incluant les diagrammes circulaires, les diagrammes à barres, les histogrammes et les nuages de points.

Bien entendu, Python propose de nombreuses autres bibliothèques pour la création de visualisations par les experts en Machine Learning et les scientifiques des données.

Vous pouvez explorer davantage les types de graphiques que Matplotlib permet de créer, et les fonctions correspondantes.

Bon graphisme ! 📉📊

Auteur
France

Rédacteur tech, guides pratiques et astuces numériques.