Visualisation des Données avec Matplotlib et Seaborn
1 Introduction à la Visualisation des Données
La visualisation des données est une étape cruciale en science des données. Elle permet de mieux comprendre la structure des données, d’identifier des tendances, des anomalies et de communiquer efficacement les résultats de l’analyse.
Objectifs de la visualisation :
- Compréhension : Transformer des données brutes en graphiques clairs et lisibles.
- Communication : Présenter des résultats analytiques de manière percutante et accessible.
- Analyse exploratoire : Détecter rapidement des corrélations, des patterns ou des valeurs aberrantes.
1.1 Bibliothèques principales en Python :
- Matplotlib : Outil puissant pour créer des graphiques personnalisables.
- Seaborn : Extension de Matplotlib qui simplifie la création de graphiques statistiques avec des styles améliorés.
1.2 Choix du Type de Graphique selon la Nature des Données
Type de Graphique | Type de Données | Utilisation principale |
---|---|---|
Courbe linéaire | Variable continue | Suivi d’une tendance |
Histogramme | Variable numérique continue | Distribution d’une variable |
Diagramme en barres | Variable catégorielle | Comparaison entre différentes catégories |
Nuage de points | Deux variables numériques | Relation entre deux variables |
Boxplot | Variable numérique / catégorielle | Comparaison de distributions |
Violin plot | Variable numérique / catégorielle | Visualisation de la distribution |
Heatmap | Matrice de valeurs numériques | Corrélation entre variables |
Pie chart (camembert) | Variables catégoriques | Répartition proportionnelle |
2 Visualisation avec Matplotlib
2.1 Installation et Importation
##Graphiques de Base avec Matplotlib
2.2 Courbe Linéaire (Line Plot)
Les courbes permettent d’observer l’évolution d’une variable sur un axe donné.
2.3 Nuage de Points (Scatter Plot)
Permet d’analyser la relation entre deux variables numériques.
2.4 Histogramme
Utilisé pour représenter la distribution des valeurs d’une variable continue.
2.5 Diagramme en Barres (Bar Chart)
Comparaison des quantités entre différentes catégories.
2.6 Diagramme Circulaire (Pie Chart)
Montre la répartition d’un ensemble sous forme de pourcentages.
parts = [35, 25, 20, 20]
labels = ['Marque A', 'Marque B', 'Marque C', 'Marque D']
colors = ['gold', 'lightcoral', 'lightskyblue', 'yellowgreen']
plt.pie(parts, labels=labels, colors=colors, autopct='%1.1f%%', startangle=140)
plt.title("Répartition des parts de marché")
plt.axis('equal')
plt.show()
3 Visualisation Avancée avec Seaborn
Seaborn simplifie la création de graphiques statistiques et esthétiques, en particulier pour des DataFrames issus de Pandas.
3.1 Installation et Importation
Si nécessaire, installez Seaborn :
Puis importez-le :
3.2 Boxplot
Le boxplot visualise la distribution d’une variable et met en avant la médiane, les quartiles et les valeurs aberrantes.
Exemple : Distribution des additions par jour avec le dataset “tips”
# Chargement des données
tips = sns.load_dataset("tips")
# Création du boxplot
sns.boxplot(x="day", y="total_bill", data=tips)
plt.xlabel("Jour de la semaine")
plt.ylabel("Addition totale ($)")
plt.title("Distribution des additions par jour")
plt.show()
3.3 Heatmap
La heatmap représente une matrice de données à l’aide de codes couleur.
Exemple : Matrice de corrélation du dataset “tips”
# Calcul de la matrice de corrélation
corr = tips.corr()
# Affichage de la heatmap
sns.heatmap(corr, annot=True, cmap="coolwarm")
plt.title("Matrice de corrélation (dataset Tips)")
plt.show()
Explications : - tips.corr()
calcule la matrice de corrélation des variables numériques. - annot=True
affiche les valeurs dans chaque cellule.
3.4 Pairplot
Le pairplot affiche une matrice de scatter plots pour examiner les relations entre chaque paire de variables.
Exemple : Pairplot du dataset “iris”
# Chargement des données
iris = sns.load_dataset("iris")
# Création du pairplot
sns.pairplot(iris, hue="species")
plt.suptitle("Pairplot du dataset Iris", y=1.02)
plt.show()
Note : - L’argument hue="species"
permet de colorer les points selon l’espèce.
3.5 Violin Plot
Le violin plot combine un boxplot avec une estimation de la densité de la distribution.
Exemple : Distribution des pourboires pour fumeurs vs non-fumeurs
sns.violinplot(x="smoker", y="tip", data=tips, palette="Pastel1")
plt.xlabel("Fumeur")
plt.ylabel("Pourboire ($)")
plt.title("Distribution des pourboires pour fumeurs vs non-fumeurs")
plt.show()
3.6 Palettes de Couleurs et Thèmes
Seaborn offre des palettes et styles par défaut pour améliorer l’esthétique.
Modifier la palette par défaut
sns.set_palette("pastel")
sns.boxplot(x="day", y="total_bill", data=tips)
plt.title("Boxplot avec palette pastel")
plt.show()
Changer le style global
Ajuster le contexte (taille des éléments)
sns.set_context("talk")
sns.violinplot(x="smoker", y="tip", data=tips, palette="muted")
plt.title("Violin plot avec contexte 'talk'")
plt.show()
4 Personnalisation Avancée des Graphiques
La personnalisation permet d’affiner la présentation de vos graphiques pour une meilleure lisibilité et un rendu professionnel. Vous pouvez modifier les axes, les titres, ajouter des annotations et sauvegarder vos graphiques avec une qualité optimale.
4.1 Modification des Axes et Titres
Vous pouvez personnaliser les étiquettes des axes, le titre et la légende en ajustant la taille des polices.
import numpy as np
import matplotlib.pyplot as plt
# Données
x = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x)
# Tracé du graphique avec personnalisation des polices
plt.plot(x, y, label="sin(x)", color='orange')
plt.xlabel("x", fontsize=12) # Taille de la police de l'axe x
plt.ylabel("sin(x)", fontsize=12) # Taille de la police de l'axe y
plt.title("Courbe sin(x) avec polices personnalisées", fontsize=16) # Taille du titre
plt.legend(fontsize=10) # Taille de la police de la légende
plt.show()
4.2 Annotations Avancées
Les annotations permettent de mettre en évidence des points d’intérêt dans un graphique. Vous pouvez personnaliser le texte et la flèche de l’annotation.
# Définition du point maximum
x_max = np.pi / 2
y_max = np.sin(x_max)
plt.plot(x, y, label="sin(x)", color='orange')
plt.scatter([x_max], [y_max], color='red')
plt.annotate("Point max", xy=(x_max, y_max), xytext=(x_max + 1, y_max + 0.3),
arrowprops=dict(facecolor='black', shrink=0.05), fontsize=12)
plt.xlabel("x")
plt.ylabel("sin(x)")
plt.title("Annotation avancée sur sin(x)", fontsize=16)
plt.legend()
plt.show()
4.3 Sauvegarde des Figures
Pour exporter vos graphiques dans différents formats (PNG, PDF, SVG) :
plt.plot(x, y, label="sin(x)", color='orange')
plt.xlabel("x")
plt.ylabel("sin(x)")
plt.title("Graphique sauvegardé")
plt.legend()
plt.savefig("graphique_sin.png", dpi=300, bbox_inches='tight')
plt.show()
Explications :
dpi=300
: Définit une haute résolution pour l’image exportée.bbox_inches='tight'
: Ajuste les marges pour éviter que des éléments soient coupés.
Avec ces options, vous obtenez un graphique professionnel prêt à être utilisé dans des rapports ou présentations.
5 Organisation des Graphiques avec les Subplots
5.1 Utilisation de plt.subplot()
La fonction plt.subplot(nrows, ncols, index)
permet de créer une grille simple de sous-graphes. Elle divise la figure en une matrice de nrows
lignes et ncols
colonnes, puis sélectionne le subplot à modifier à l’aide de l’index
.
Exemple : Deux graphiques côte à côte (sin(x) et cos(x))
Dans cet exemple, nous allons afficher côte à côte les courbes des fonctions sin(x)
et cos(x)
.
# Importation des bibliothèques
import numpy as np
import matplotlib.pyplot as plt
# Données
x = np.linspace(0, 2 * np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
plt.figure(figsize=(10, 4))
# Premier subplot : sin(x)
plt.subplot(1, 2, 1) # 1 ligne, 2 colonnes, 1er subplot
plt.plot(x, y1, color='blue', label='sin(x)')
plt.xlabel("x")
plt.ylabel("sin(x)")
plt.title("Courbe sin(x)")
plt.legend()
# Deuxième subplot : cos(x)
plt.subplot(1, 2, 2) # 1 ligne, 2 colonnes, 2e subplot
plt.plot(x, y2, color='red', label='cos(x)')
plt.xlabel("x")
plt.ylabel("cos(x)")
plt.title("Courbe cos(x)")
plt.legend()
# Ajustement de l'affichage
plt.tight_layout()
plt.show()
5.2 Utilisation de plt.subplots()
La fonction plt.subplots()
crée à la fois une figure et un tableau d’axes (fig, axes
), ce qui permet de gérer plusieurs subplots plus facilement que plt.subplot()
. Elle retourne : - fig
: la figure globale. - axes
: une liste ou un tableau d’objets AxesSubplot
, facilitant la manipulation des sous-graphiques.
Exemple : Grille 2×2 de graphiques
Dans cet exemple, nous allons tracer quatre graphiques dans une grille de 2 lignes et 2 colonnes.
# Importation des bibliothèques
import numpy as np
import matplotlib.pyplot as plt
# Données
x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.sin(2*x)
y4 = np.cos(2*x)
# Création de la figure et des subplots
fig, axes = plt.subplots(2, 2, figsize=(10, 8), sharex=True, sharey=True)
# Premier graphique : sin(x)
axes[0, 0].plot(x, y1, color='blue')
axes[0, 0].set_title("sin(x)")
# Deuxième graphique : cos(x)
axes[0, 1].plot(x, y2, color='red')
axes[0, 1].set_title("cos(x)")
# Troisième graphique : sin(2x)
axes[1, 0].plot(x, y3, color='green')
axes[1, 0].set_title("sin(2x)")
# Quatrième graphique : cos(2x)
axes[1, 1].plot(x, y4, color='purple')
axes[1, 1].set_title("cos(2x)")
# Titre global
fig.suptitle("Exemples de graphiques en subplots", fontsize=16)
# Ajustement de l'affichage
plt.tight_layout(rect=[0, 0, 1, 0.95])
plt.show()
#Conclusion
Ce guide vous offre une base solide pour utiliser Matplotlib et Seaborn en Python. Vous avez appris à : - Choisir le bon type de graphique selon vos données. - Créer et personnaliser des graphiques avec Matplotlib. - Explorer des visualisations avancées avec Seaborn. - Organiser plusieurs visualisations dans une même figure.