Nuée marine

Manav Narula 16 juillet 2021
Nuée marine

Un nuage de points est l’un des graphiques les plus basiques et les plus utiles utilisés. Le module Seaborn de Python peut aller plus loin avec ces graphiques et les utiliser pour représenter des valeurs catégorielles.

Un diagramme en essaim est un type de diagramme de dispersion utilisé pour représenter des valeurs catégorielles. Il est très similaire au strip plot, mais il évite le chevauchement des points. Nous pouvons utiliser le seaborn.swarmplot() pour créer de tels graphes.

Il n’est pas conseillé d’utiliser ce type de graphique lorsque la taille de l’échantillon est importante.

Nous utiliserons la fonction swarmplot() pour créer un tel graphique pour les valeurs catégorielles dans le code suivant.

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.swarmplot(data=df, y="Price", x="Quantity")

essaimplot marin pour les données catégorielles

Dans l’exemple ci-dessus, nous pouvons ajouter le paramètre hue à la fonction swarmplot() et séparer les catégories pour les deux produits différents. Nous pouvons séparer les deux produits en utilisant l’argument dodge et en le définissant sur True.

De plus, nous pouvons également utiliser d’autres arguments avec la fonction swarmplot(). La taille et la couleur des points peuvent être modifiées à l’aide des arguments size et color. Nous pouvons modifier la combinaison de couleurs utilisée pour les différentes catégories à l’aide du paramètre palette. L’argument linewidth ajoute une bordure aux points de la largeur spécifiée. L’ordre des catégories tracées peut être contrôlé à l’aide du paramètre order.

Nous allons essayer d’utiliser les arguments ci-dessus dans l’exemple suivant.

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.swarmplot(
    data=df,
    y="Price",
    x="Quantity",
    hue="Product",
    dodge=True,
    linewidth=2.5,
    palette="Set2",
    size=10,
)

essaimplot marin avec teinte et autres arguments

Le swarmplot() peut également être utilisé comme un bon complément à une boîte ou à un violon. Cela donne une bonne idée de la répartition des données.

Nous pouvons ajouter une boîte à moustaches sur le diagramme en essaim en utilisant le code suivant.

import random
import numpy as np
import seaborn as sns

n = random.sample(range(0, 50), 30)
arr = np.array(n)
sns.boxplot(n)
sns.swarmplot(n, color="red")

box plot seaborn sur swarmplot

La fonction catplot() peut également créer un tel diagramme en essaim. Pour cela, nous devons spécifier la valeur du paramètre kind dans la fonction catplot() comme swarm.

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