Seaborn Swarmplot

Manav Narula 16 julho 2021
Seaborn Swarmplot

Um gráfico de dispersão é um dos gráficos mais básicos e úteis usados. O módulo marítimo em Python pode levar esses gráficos um passo adiante e usá-los para representar valores categóricos.

Um gráfico de enxame é um tipo de gráfico de dispersão usado para representar valores categóricos. É muito semelhante ao strip plot, mas evita a sobreposição de pontos. Podemos usar o seaborn.swarmplot() para criar esses gráficos.

Não é aconselhável usar este tipo de gráfico quando o tamanho da amostra for grande.

Usaremos a função swarmplot() para criar tal gráfico para valores categóricos no código a seguir.

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 marinho para dados categóricos

No exemplo acima, podemos adicionar o parâmetro hue à função swarmplot() e separar as categorias para os dois produtos diferentes. Podemos dividir os dois produtos usando o argumento dodge e definindo-o como True.

Além disso, podemos usar alguns outros argumentos também com a função swarmplot(). O tamanho e a cor dos pontos podem ser alterados usando os argumentos size e color. Podemos alterar a combinação de cores usada para diferentes categorias usando o parâmetro palette. O argumento linewidth adiciona uma borda aos pontos da largura especificada. A ordem das categorias plotadas pode ser controlada usando o parâmetro order.

Tentaremos usar os argumentos acima no exemplo a seguir.

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

swarmplot seaborn com matiz e outros argumentos

O swarmplot() também pode ser usado como um bom elogio sobre um enredo de caixa ou violino. Dá uma boa ideia da distribuição dos dados.

Podemos adicionar um gráfico de caixa sobre o gráfico de enxame usando o código a seguir.

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

plotagem de caixa nascida do mar sobre swarmplot

A função catplot() também pode criar um gráfico de enxame. Para isso, precisamos especificar o valor do parâmetro kind na função 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