Une introduction sur la visualisation de données avec Matplotlib et Python
Jul 08, 2024
La visualisation de données est un élément essentiel de la science des données. Elle permet de transformer des données brutes en informations compréhensibles et exploitables. Dans cet article, nous allons explorer l'utilisation de Matplotlib, une bibliothèque de visualisation en Python. Nous verrons comment créer des graphiques de base, personnaliser des visualisations et créer un graphique de dispersion (scatter plot) avec une droite de régression avec la bibliothèque scipy.
Introduction à Matplotlib
Matplotlib est l'une des bibliothèques de visualisation de données les plus populaires en Python. Elle est puissante et flexible, ce qui permet de créer une grande variété de graphiques, des plus simples aux plus complexes.
Pour commencer, vous devez installer Matplotlib, numpy et scipy, si ce n'est pas déjà fait. Vous pouvez l'installer via pip :
pip install matplotlib numpy scipy
Création de graphiques de base
Commençons par un exemple simple de tracé d'une fonction sinusoïdale. Voici un code Python qui génère un graphique de la fonction sinus :
import numpy as np import matplotlib.pyplot as plt x = np.arange(0, 5, 0.1) y = np.sin(x) plt.plot(x, y) plt.title('Graphique de la fonction sinusoïdale') plt.xlabel('x') plt.ylabel('sin(x)') plt.show()
Ce code crée un graphique en ligne où l'axe des x représente les valeurs de 0 à 5 par incréments de 0,1, et l'axe des y représente les valeurs de la fonction sinusoïdale.
Personnalisation des graphiques
Matplotlib offre une grande flexibilité pour personnaliser vos graphiques. Vous pouvez modifier les couleurs, les styles de ligne, ajouter des légendes, des annotations et bien plus encore.
Changer la couleur et le style de ligne
Pour changer la couleur et le style de ligne du graphique, vous pouvez utiliser des arguments supplémentaires dans la fonction plot
:
plt.plot(x, y, color='green', linestyle='--', linewidth=2)
Ajouter une légende
Pour ajouter une légende, utilisez la fonction legend
:
plt.plot(x, y, label='sin(x)') plt.legend()
Ajouter des annotations
Les annotations peuvent être ajoutées avec la fonction annotate
:
plt.annotate('Max', xy=(1.5, 1), xytext=(2, 1.5), arrowprops=dict(facecolor='black', shrink=0.05))
Vous pouvez tester le code en entier en cliquant sur Run, Pour agrandir le graph cliquer sur
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 5, 0.1)
y = np.sin(x)
plt.plot(x, y, color='green', linestyle='--', linewidth=2,label='sin(x)')
plt.title('Graphique de la fonction sinusoïdale')
plt.annotate('Max', xy=(1.5, 1), xytext=(0.5, 0.5),
arrowprops=dict(facecolor='black', shrink=0.05))
plt.xlabel('x')
plt.ylabel('sin(x)')
plt.legend()
plt.show()
Types de graphiques courants
Matplotlib permet de créer une variété de types de graphiques. Voici quelques exemples courants.
Graphiques à barres
Les graphiques à barres sont utiles pour comparer des catégories distinctes. Voici un exemple :
import matplotlib.pyplot as plt import numpy as np # Définir les catégories et les valeurs associées categories = ['A', 'B', 'C', 'D'] values = [10, 24, 36, 40] colors = ['red', 'green', 'blue', 'orange'] # Couleurs personnalisées pour chaque barre # Convertir les catégories en valeurs numériques x_pos = np.arange(len(categories)) # Créer une nouvelle figure et des axes fig, ax = plt.subplots() # Créer le graphique à barres avec les couleurs spécifiées bars = ax.bar(x_pos, values, color=colors) bar_width = 0.8 # Ajouter les labels des catégories sur l'axe des x # Ajouter les labels des catégories au milieu des barres ax.set_xticks(x_pos + bar_width / 2) ax.set_xticklabels(categories) # Ajouter un titre et des labels aux axes ax.set_title('Graphique à barres avec couleurs personnalisées') ax.set_xlabel('Catégories') ax.set_ylabel('Valeurs') # Ajouter une légende des couleurs ax.legend(bars, categories) # Afficher le graphique plt.show()
Vous pouvez tester le code en entier en cliquant sur Run, vous pouvez aussi le modifier, changer les couleurs ou les valeurs. Pour agrandir le graph cliquer sur
import matplotlib.pyplot as plt
import numpy as np
# Définir les catégories et les valeurs associées
categories = ['A', 'B', 'C', 'D']
values = [10, 24, 36, 40]
colors = ['red', 'green', 'blue', 'orange'] # Couleurs personnalisées pour chaque barre
# Convertir les catégories en valeurs numériques
x_pos = np.arange(len(categories))
# Créer une nouvelle figure et des axes
fig, ax = plt.subplots()
# Créer le graphique à barres avec les couleurs spécifiées
bars = ax.bar(x_pos, values, color=colors)
bar_width = 0.8
# Ajouter les labels des catégories sur l'axe des x
# Ajouter les labels des catégories au milieu des barres
ax.set_xticks(x_pos + bar_width / 2)
ax.set_xticklabels(categories)
# Ajouter un titre et des labels aux axes
ax.set_title('Graphique à barres avec couleurs personnalisées')
ax.set_xlabel('Catégories')
ax.set_ylabel('Valeurs')
# Ajouter une légende des couleurs
ax.legend(bars, categories)
# Afficher le graphique
plt.show()
Nuages de points et régressions
Voici un exemple de code Python pour tracer un graphique de dispersion (scatter plot) avec une droite de régression, et une explication détaillée.
import numpy as np import matplotlib.pyplot as plt from scipy import stats # Générer des données aléatoires np.random.seed(0) x = np.random.rand(50) y = 2 * x + 1 + np.random.normal(scale=0.1, size=x.shape) # Créer un graphique de dispersion plt.scatter(x, y, color='blue', label='Données') # Calculer la droite de régression slope, intercept, r_value, p_value, std_err = stats.linregress(x, y) regression_line = slope * x + intercept # Tracer la droite de régression plt.plot(x, regression_line, color='red') # Ajouter un titre et des labels aux axes plt.title('Graphique de dispersion avec droite de régression') plt.xlabel('x') plt.ylabel('y') plt.legend() # Afficher le graphique plt.show()
Vous pouvez tester et exécuter le code dans la fenêtre ci-dessous :
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
# Générer des données aléatoires
np.random.seed(0)
x = np.random.rand(50)
y = 2 * x + 1 + np.random.normal(scale=0.1, size=x.shape)
# Créer un graphique de dispersion
plt.scatter(x, y, color='blue', label='Données')
# Calculer la droite de régression
slope, intercept, r_value, p_value, std_err = stats.linregress(x, y)
regression_line = slope * x + intercept
# Tracer la droite de régression
plt.plot(x, regression_line, color='red')
# Ajouter un titre et des labels aux axes
plt.title('Graphique de dispersion avec droite de régression')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
# Afficher le graphique
plt.show()
Conclusion
La visualisation des données est une compétence essentielle pour tout scientifique des données. Matplotlib, avec sa flexibilité et sa puissance, est un outil indispensable pour créer des visualisations claires et informatives. Que vous soyez débutant ou expert, Matplotlib a quelque chose à offrir pour chaque niveau de compétence. Expérimentez avec différents types de graphiques et personnalisez-les pour répondre à vos besoins spécifiques.
Références
- http://www.matplotlib.org - The project web page for matplotlib.
- https://github.com/matplotlib/matplotlib - The source code for matplotlib.
- http://matplotlib.org/gallery.html - A large gallery showcasing various types of plots matplotlib can create. Highly recommended!
- http://www.loria.fr/~rougier/teaching/matplotlib - A good matplotlib tutorial.
- http://scipy-lectures.github.io/matplotlib/matplotlib.html - Another good matplotlib reference.