← Retourner à la liste des articles
Image blog
Auteur

Par Équipe Blent

Data Scientist

Publié le 17 mai 2022

Catégorie Machine Learning

Matplotlib : faire des graphiques en Python

Dans le monde de la science des données, la visualisation des données représente à la fois une étape primordiale d'un projet Data et un endroit frustrant pour un nouvel utilisateur. Sous Python, il existe une variété d'outils et de bibliothèques conçues pour cette tache et il existe aussi pas mal de types de graphes à comprendre et apprendre à afficher.

L'un de ces outils le plus connu est Matplotlib. C'est l’une des bibliothèques les plus puissantes et le plus utilisées en Python pour la visualisation de données. Elle permet nous permet de créer presque n’importe quelle visualisation que nous pourrions imaginer et en plus il y a un riche écosystème d’outils python construits autour d'elle et beaucoup d’outils de visualisation plus avancés utilisent Matplotlib comme bibliothèque de base. Cela fait de la maîtrise de cet outil une compétence nécessaire pour chaque Data Scientist.

Dans cet article, nous allons voir comment utiliser la bibliothèque Matplotlib pour créer des visualisations et des graphiques statistiques et quels sont ses avantages et ses alternatifs.

Qu'est-ce que Matplotlib et quels sont ses avantages ?

Inspiré de Matlab, Matplotlib est une bibliothèque conçue pour tracer et visualiser des graphiques via le langage de programmation Python. Elle est une librairie puissante, compatible avec beaucoup de plateformes et capable de générer des graphiques dans beaucoup de formats différents.

Logo Matplotlib

À lire aussi : découvrez notre formation MLOps


Matplotlib est avantageux en raison de sa flexibilité et de sa personnalisation. En effet, il est non seulement compatible avec de nombreux langages de programmation et de nombreux environnements, mais il fournit aussi de nombreux avantages, par exemple :

  • Il permet de produire des graphiques de qualité professionnelle en peu de temps.
  • Il est aussi open source, disponible en libre accès et facile à apprendre et à utiliser.
  • Matplotlib offre de nombreuses fonctionnalités pour personnaliser les graphes. Les utilisateurs peuvent contrôler presque tous les aspects du tracé, y compris la taille du graphique, la résolution, les couleurs, les styles de ligne, les marqueurs, les fonds, les échelles, les textes, les polices de caractères, etc.
  • Il permet également de sauvegarder les graphiques dans différents formats, y compris les formats vectoriels comme EPS, PDF, SVG, et les formats de bitmap comme PNG, JPG, TIFF, etc.
  • Matplotlib est compatible avec plusieurs langages de programmation comme Python, R, C++, etc.

Cette bibliothèque représente aussi la base de plusieurs autres outils de visualisation de données comme Seaborn par exemple. C'est pourquoi un certain niveau de connaissances de cet outil est nécessaire pour les utiliser. Nous allons alors voir dans ce qui suit comment afficher de différents types de graphiques avec Matplotlib.

Comment fonctionne Matplotlib ?

Matplotlib peut être utilisé de deux façons :

1. Via un développement orienté objet

Ce mode s'avère être le mode le plus verbeux, mais aussi le plus riche. En effet, lors de l’utilisation de l’interface orienté objet, il est utile de savoir comment Matplotlib structure ses tracés. Le tracé final que nous voyons en sortie est un objet ‘Figure’. L’objet Figure est le conteneur de premier niveau pour tous les autres éléments qui composent l’image graphique. Ces autres éléments sont appelés Artistes. L’objet Figure peut être considéré comme une toile, sur laquelle différents artistes agissent pour créer l’image graphique finale. Cette figure peut contenir n’importe quel nombre d’artistes différents.

Un artiste peut être une figure, un axe, une légende, etc.

Nous allons tracer un graphique simple en utilisant cette méthode pour mieux comprendre :

import matplotlib.pyplot as plt
fig, ax1 = plt.subplots()
ax1.set_ylabel("A")
ax1.set_xlabel("B")
ax1.plot([1,2,4,5], [0,3,4,5], "blue")
ax2 = ax1.twinx() # Créer une autre axe y
ax2.set_ylabel("C")
ax2.set_xlabel("B")
ax2.plot([1,2,4,5], [0,2,3,6], "green")
fig.set_size_inches(7,5)
fig.set_dpi(100)
plt.show()

En utilisant la fonction plt.subplot() nous initialisons une figure vide. Nous avons ajouté ensuite un deuxième axe ax2 à la figure comme premier artiste. Nous pouvons ensuite ajouter d'autres.

2. Via le module Pyplot inclus dans Matplotlib

Ce module regroupe de nombreuses fonctions pré construites pour créer des graphiques. Toutes les commandes pyplot modifient la même figure. Il s’agit d’une interface basée sur l’état, où l’état est préservé par divers appels de fonction (les méthodes qui modifient la figure). Cette interface nous permet de générer rapidement et facilement des graphiques. La nature de l’interface basée sur l’état nous permet d’ajouter des éléments et de modifier le graphique selon nos besoins, quand nous en avons besoin.

Cette interface partage beaucoup de similitudes dans la syntaxe et la méthodologie avec Matlab. Nous allons appliquer le même exemple précédent, mais cette fois avec la méthode de Pyplot:

import matplotlib.pyplot as plt
plt.figure(figsize=(9,7), dpi=100)
plt.plot([1,2,4,5],[0,3,4,5],'bo-')
plt.xlabel("A")
plt.ylabel("B")
plt.legend(["B"])

enter image description here

La fonction plt.figure utilisée dans la première ligne permet de créer une figure, les commande appeler en suite avec plt. permettent de modifier les éléments de cette figure.

Les différents types de visualisations de données avec Matplotlib

Regardons comment tracer différents types de graphes en utilisant pyplot. Nous allons commencer par un graphique très simple :

# Importation de Matplotlib
import` `matplotlib.pyplot as plt
# Initialisation de la liste des ordonnees
x=[1,2,3]
# Initialisation de la liste des absisses
y=[1,3,1]
# Traçer les points
plt.plot(x, y)
# Légender les axes
plt.xlabel('x - axis')
plt.ylabel('y - axis')
# Ajouter un titre
plt.title('My first graph!')
# Afficher le graphe
plt.show()

enter image description here

Nous allons ensuite essayer de customiser notre traçage en changeant la couleur et le style et largeur de la ligne et plus :

x=[1,2,3]
y=[1,3,1]
# Traçer les points en specifiant plusieurs paramètres d'affichage tels que la couleur et le style et largeur de la ligne et des marqueurs de points
plt.plot(x, y, color='green', linestyle='dashed', linewidth = 3,marker='o', markerfacecolor='blue', markersize=12)

# specifier la limites des axes x et y
plt.ylim(1,8)
plt.xlim(1,8)

plt.xlabel('x - axis')
plt.ylabel('y - axis')
plt.title('My first customized graph!')
plt.show()

enter image description here

Ces personnalisations sont applicables à presque n’importe quel traçage.


À lire aussi : découvrez notre formation MLOps


Nous allons maintenant commencer créer des graphiques plus complexes :

Diagramme à barres

Un graphique à barres est essentiellement utilisé pour agréger les données catégoriques selon certaines méthodes et par défaut, c'est la moyenne. Il peut également être compris comme une visualisation de l'action groupby selon deux variables. Avec Matplotlib, ce genre de graphe est produit en utilisant la fonction plt.bar :

x = [1, 2, 3, 4, 5]
y = [10, 24, 36, 40, 5]
labels = ['one', 'two', 'three', 'four', 'five']
plt.bar(x,y, tick_label = labels,
width = 0.8, color = ['red', 'green'])
plt.xlabel('x')
plt.ylabel('y')
plt.title('My bar chart!')
plt.show()

enter image description here

Nuage de points

Un nuage de points est peut-être l’exemple le plus courant de la visualisation des relations entre deux ou plusieurs variables. Il s'agit tout simplement de visualiser tous les éléments d'une ou plusieurs colonnes du jeu de données en fonction d'une autre caractéristique. Chaque point montre une observation dans l’ensemble de données et ces observations sont représentées par des structures en forme de points. Avec Matplotlib, ce genre de graphe est produit en utilisant la fonction plt.scatter :

x = [1,2,3,4,5,6,7,8,9,10]
y = [2,4,5,7,6,8,9,11,12,12]
plt.scatter(x, y)
plt.xlabel('x')
plt.ylabel('y')
plt.title('My scatter plot!')
plt.show()

enter image description here

Histogramme

Le graphique le plus courant pour afficher les distributions de fréquence est un histogramme. Pour créer un histogramme, nous pouvons utiliser la fonction plt.hist pour tracer les histogrammes :

frequencies = [2,5,70,40,30,45,50,45,43,40,44,60,7,13,57,18,90,77,32,21,20,40]
range = (0, 100)
bins = 10
plt.hist(ages, bins, range, color = 'green',
histtype = 'bar', rwidth = 0.8)
plt.xlabel('x')
plt.ylabel('y')
plt.title('My histogram!')
plt.show()

enter image description here

Diagramme à secteurs

Un diagramme circulaire ou à secteurs est utilisé pour montrer le pourcentage de chaque sous ensembles. Par conséquent, il est utilisé lorsque nous voulons comparer les catégories individuelles avec l’ensemble. Nous pouvons utiliser la fonction plt.pie pour le tracer :

activities = ['eat', 'sleep', 'work', 'play']
slices = [3, 7, 8, 6]
plt.pie(slices, labels = activities,startangle=90, shadow = True, explode = (0, 0, 0.1, 0),radius = 1.2, autopct = '%1.1f%%')
plt.legend()
plt.show()

enter image description here

Plusieurs autres graphiques peuvent être affichés avec Matplotlib, on peut citer en guise d'exemple les graphiques en 3D, les boites à moustaches (boxplot), etc. Le code pour ces tracés est disponible dans le site de la documentation officielle de la bibliothèque.

Les meilleures alternatives à Matplotlib

Jusqu'à présent, Matplotlib était l'outil Python le plus populaire pour la Data Visualisation. Malgré ça, il y a certains défauts valables à son sujet qui reviennent souvent. On peut citer par exemple :

  • Dans certains cas, il peut être légèrement plus difficile à configurer que d'autres bibliothèques, mais c'est en grande partie dû au fait qu'il offre une grande flexibilité dans la configuration.
  • L'un des principaux inconvénients de Matplotlib est qu'il est assez lent pour certaines tâches. En particulier, si vous avez beaucoup de données à tracer ou si vous avez des graphiques très complexes, Matplotlib peut être assez lent.
  • Matplotlib ne fournit pas beaucoup de fonctionnalités interactives par défaut. Mais cela peut être remédié en ajoutant des fonctionnalités interactives en installant des modules supplémentaires.
  • Matplotlib n'est pas aussi bien documenté que d'autres bibliothèques Python.

Si vous recherchez des alternatives à Matplotlib pour Python, voici quelques-unes des meilleures options que vous pouvez envisager :

  1. Seaborn : Il existe plusieurs différences clés entre Matplotlib et Seaborn. Seaborn est une bibliothèque de niveau supérieur à Matplotlib. Seaborn offre un style par défaut plus attrayant et une palette de couleurs sophistiquée. Seaborn s’intègre également bien avec la bibliothèque d’analyse de données Pandas. Enfin, Seaborn est axé sur la visualisation des données statistiques, tandis que Matplotlib est un outil plus général.
  2. Bokeh : Bokeh produit des visualisations interactives qui peuvent être intégrées dans des applications Web. Matplotlib est une bibliothèque de traçage statique qui produit des figures de qualité de publication. Bokeh peut créer aussi des mises en page complexes avec plusieurs éléments en interaction, tandis que Matplotlib est mieux adapté aux tracés simples.
  3. Ggplot : Il n’y a pas de gagnant clair en comparant Matplotlib et Ggplot. Les deux ont leurs avantages et leurs inconvénients. Matplotlib est plus flexible et plus facile à utiliser, tandis que Ggplot est plus esthétique.

À lire aussi : découvrez notre formation MLOps


Matplotlib reste est un outil puissant qui peut être utilisé pour créer des figures et des graphiques de haute qualité. Cependant, il peut être difficile à utiliser et la syntaxe peut être déroutante. Il y a aussi un certain nombre d’autres bibliothèques de traçage disponibles qui peuvent être plus simples à utiliser. Un certain niveau de connaissances de cette bibliothèque est toujours nécessaire pour passer à l'usage des autres outils.

Articles similaires

Blog

20 sept. 2022

Machine Learning

Hugging Face est une startup française qui s'est fait connaître grâce à l'infrastructure NLP qu'ils ont développée. Aujourd'hui, elle est sur le point de révolutionner le domaine du Machine Learning et traitement automatique du langage naturel. Dans cet article, nous allons présenter Hugging Face et détailler les taches de base que cette librairie permet de réaliser. Nous allons également énumérer ses avantages et ses alternatifs.

Nada Belaidi

Équipe Blent

Data Scientist

Lire l'article

Blog

12 juil. 2022

Machine Learning

spaCy est une bibliothèque open-source pour le traitement avancé du langage naturel. Elle est conçue spécifiquement pour une utilisation en production et permet de construire des applications qui traitent et comprennent de grands volumes de texte.

Nada Belaidi

Équipe Blent

Data Scientist

Lire l'article

Blog

4 juil. 2022

Machine Learning

Un auto-encodeur est une structure de réseaux neuronaux profonds qui s'entraîne pour réduire la quantité de données nécessaires pour représenter une donnée d'entrée. Ils sont couramment utilisés en apprentissage automatique pour effectuer des tâches de compression de données, d'apprentissage de représentations et de détection de motifs.

Nada Belaidi

Équipe Blent

Data Scientist

Lire l'article