Complot de violon utilisant Seaborn

Manav Narula 15 février 2024
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.

informations sur la figure du violon

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)

parcelle de violon à seaborn

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")

parcelle de violon à seaborn avec une taille d’échantillon différente

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")

parcelle de violon à seaborn montrant la distribution des données

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
)

intrigue de violon dans seaborn avec le paramètre intérieur

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.

Auteur: Manav Narula
Manav Narula avatar Manav Narula avatar

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