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