Violin Plot
Le Violin Plot (ou diagramme en violon) est une visualisation statistique avancée qui combine les atouts du Box Plot et de la courbe de densité (KDE). Il permet non seulement de résumer la distribution d’une variable numérique, mais aussi de visualiser sa forme complète : symétrie, modes, étalement, et présence de valeurs aberrantes.
Contrairement au Box Plot, qui ne montre que des statistiques résumées (médiane, quartiles, outliers), le Violin Plot ajoute une estimation lisse de la densité de probabilité, souvent symétrique autour de la médiane, ce qui le rend idéal pour analyser des distributions complexes ou multimodales.
Ce type de graphique est particulièrement utile pour :
-
Comparer la forme de plusieurs distributions entre différentes catégories
-
Repérer des variations subtiles dans la densité (pics, aplatissements)
-
Visualiser à la fois la distribution complète et les statistiques de base
Fonctions :
-
sns.violinplot()
La fonction sns.violinplot() permet de tracer un diagramme en violon. Ce graphique combine un boxplot et un kdeplot (estimation de densité) pour visualiser la distribution des données. Chaque violon représente la distribution d'une variable pour une catégorie spécifique, avec la largeur représentant la densité des données à différentes valeurs.
Importation :
import seaborn as snsAttributs :
Paramètre Type Description Valeur par défaut dataDataFrame Le DataFrame contenant les données à visualiser. Nonexstr Nom de la variable à afficher sur l'axe des x (catégories). Noneystr Nom de la variable à afficher sur l'axe des y (valeurs). Nonehuestr Nom de la variable à utiliser pour colorer les violons par catégories. Nonepalettestr / list Palette de couleurs à utiliser pour les différentes catégories de la variable hue.Nonesplitbool Si True, divise chaque violon pour chaque catégorie de la variable hue.Falsescalestr Définit la méthode de mise à l'échelle de la largeur des violons. Options : "area","count","width"."area"innerstr Spécifie le type de graphique à afficher à l'intérieur du violon. Options : "box","stick","point",None."box"bwfloat Le paramètre de lissage de la densité (largueur de la fenêtre de lissage). 0.2Exemple de code :
import seaborn as sns import matplotlib.pyplot as plt # Chargement du dataset "tips" data = sns.load_dataset("tips") # Tracer un violonplot pour la variable total_bill en fonction du jour sns.violinplot(x="day", y="total_bill", data=data, hue="sex", split=True) plt.show()
Explication du code :
import seaborn as snsimporte la bibliothèque seaborn, utilisée pour la visualisation de données statistiques en Python.import matplotlib.pyplot as pltimporte la bibliothèque matplotlib.pyplot pour la création de graphiques.Chargement du dataset "tips"
data = sns.load_dataset("tips")charge le dataset "tips", qui contient des informations sur les pourboires dans des restaurants, et l'assigne à la variabledata.Tracer un violonplot pour la variable 'total_bill' en fonction du jour
sns.violinplot(x="day", y="total_bill", data=data, hue="sex", split=True)trace un violonplot, qui combine un boxplot et un KDE (estimation de la densité de probabilité) pour montrer la distribution des montants de l'addition ('total_bill') en fonction des jours de la semaine ('day'). Le paramètre hue="sex" permet de différencier les données par sexe (hommes et femmes), et split=True permet de séparer les violons pour les hommes et les femmes.Afficher le graphique
plt.show()affiche le graphique généré à l'écran.