Seaborn Swarmplot

Manav Narula 18 abril 2022
Seaborn Swarmplot

Un diagrama de dispersión es uno de los gráficos más básicos y útiles que se utilizan. El módulo seaborn en Python puede llevar estos gráficos un paso más allá y usarlos para representar valores categóricos.

Un gráfico de enjambre es un tipo de gráfico de dispersión que se utiliza para representar valores categóricos. Es muy similar al diagrama de bandas, pero evita la superposición de puntos. Podemos usar seaborn.swarmplot() para crear tales gráficos.

No es recomendable utilizar este tipo de gráfico cuando el tamaño de la muestra es grande.

Usaremos la función swarmplot() para crear dicho gráfico para valores categóricos en el siguiente código.

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

swarmplot de seaborn para datos categóricos

En el ejemplo anterior, podemos agregar el parámetro hue a la función swarmplot() y separar las categorías para los dos productos diferentes. Podemos dividir los dos productos usando el argumento dodge y configurándolo en Verdadero.

Además, podemos usar algunos otros argumentos también con la función swarmplot(). El tamaño y el color de los puntos se pueden cambiar utilizando los argumentos size y color. Podemos modificar la combinación de colores utilizada para diferentes categorías usando el parámetro palette. El argumento ancho de línea agrega un borde a los puntos del ancho especificado. El orden de las categorías trazadas se puede controlar mediante el parámetro order.

Intentaremos hacer uso de los argumentos anteriores en el siguiente ejemplo.

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

enjambre marinero con matices y otros argumentos

El swarmplot() también se puede utilizar como un buen complemento sobre una trama de caja o violín. Da una buena idea de la distribución de los datos.

Podemos agregar un diagrama de caja sobre el diagrama de enjambre usando el siguiente código.

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

parcela de caja seaborn sobre swarmplot

La función catplot() también puede crear un gráfico de enjambre. Para ello, necesitamos especificar el valor del parámetro kind en la función catplot() como swarm.

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