Complot de violon utilisant Seaborn
La fonction violinplot()
crée un tel graphique et décrit la distribution comme une combinaison entre le graphique de densité du noyau et une boîte à moustaches. Il est largement utilisé par les analystes et les statisticiens pour comprendre la distribution des données catégorielles. Son principal avantage par rapport aux boxplots traditionnels est qu’ils peuvent également être utilisés pour des distributions avec plusieurs pics.
La figure du violon dans l’intrigue peut être un peu difficile à comprendre, mais elle peut représenter différentes valeurs statistiques. La figure suivante expliquera cela.
En dehors des DataFrames, la fonction violinplot()
peut fonctionner avec un seul objet de série, un tableau numpy ou un vecteur de liste.
Dans l’exemple suivant, nous allons tracer la distribution du tracé de violon d’une seule variable.
import random
import numpy as np
n = random.sample(range(0, 50), 30)
arr = np.array(n)
sns.violinplot(n)
Notez que la taille de l’échantillon a un impact énorme sur le chiffre final dans l’intrigue du violon. Le graphique peut être trompeur pour une petite taille d’échantillon. Si cela reste un peu déroutant, on peut tracer un simple nuage de points sur le graphique du violon pour mieux comprendre.
Par example,
import random
import numpy as np
n = random.sample(range(0, 50), 30)
arr = np.array(n)
sns.violinplot(n)
sns.stripplot(n, color="red")
La fonction stripplot()
trace ici un nuage de points sur le violon plot. De même, vous pouvez également tracer une boîte à moustaches sur le tracé du violon pour comprendre la similitude et les différences entre les deux.
L’utilisation principale de violinplot()
réside dans les ensembles de données, montrant des distributions de données avec plusieurs catégories. Dans le code ci-dessous, nous allons implémenter cela.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.DataFrame(
{
"Quantity": [5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8],
"Price": [9, 10, 15, 16, 13, 14, 15, 18, 11, 12, 14, 15, 16, 17, 18, 19],
"Day": [1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2],
"Product": [
"A",
"A",
"A",
"A",
"B",
"B",
"B",
"B",
"A",
"A",
"A",
"A",
"B",
"B",
"B",
"B",
],
}
)
sns.violinplot(data=df, y="Price", x="Quantity", hue="Product")
Remarquez comment nous avons pu tracer efficacement les distributions des prix de deux produits différents à des quantités différentes sur deux jours. Remarquez l’utilisation du paramètre hue
pour tracer deux produits avec des couleurs différentes.
De nombreux autres arguments peuvent être utilisés pour peaufiner et modifier le chiffre final. Nous pouvons utiliser le paramètre split
pour comparer facilement les catégories. Leur commande peut être gérée à l’aide du paramètre order
. Chaque observation peut être affichée à l’intérieur du graphique en utilisant le paramètre inner
.
Dans le code ci-dessous, nous essayons d’utiliser certains de ces arguments.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.DataFrame(
{
"Quantity": [5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8],
"Price": [9, 10, 15, 16, 13, 14, 15, 18, 11, 12, 14, 15, 16, 17, 18, 19],
"Day": [1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2],
"Product": [
"A",
"A",
"A",
"A",
"B",
"B",
"B",
"B",
"A",
"A",
"A",
"A",
"B",
"B",
"B",
"B",
],
}
)
sns.violinplot(
data=df, y="Price", x="Quantity", hue="Product", inner="stick", split=True
)
La fonction violinplot()
renvoie un objet de type axes matplotlib pour utiliser toutes ces fonctions matplotlib pour personnaliser la figure finale. Si nous voulons retourner un objet de type FacetGrid
, nous pouvons utiliser la fonction catplot()
et spécifier le paramètre kind
comme violin
.
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn