Los datos del siguiente bloque de código se usarán en los ejemplos siguientes. A la derecha puedes ver una tabla que muestra los datos que se van a utilizar en este tutorial.
import numpy as np
import seaborn as sns
import random
# Simulación de datos
rng = np.random.RandomState(0)
variable = rng.normal(0, 1, size = 400)
random.seed(0)
grupo = random.choices(["G1", "G2", "G3"], k = 400)
grupo2 = random.choices(["A", "B"], k = 400)
df = {'variable': variable, 'grupo': grupo, 'grupo2': grupo2}
swarmplot
La función swarmplot
permite crear un bee swarm o swarm plot en Python utilizando seaborn. Ten en cuenta que puedes pasar una variable o el nombre de columna de un data frame, tal y como se muestra en el ejemplo siguiente.
import seaborn as sns
# Swarm plot
sns.swarmplot(x = variable)
# Equivalente a:
sns.swarmplot(x = "variable", data = df)
Swarm plot vertical
Si quieres rotar tu gráfico y crear una visualización vertical puedes pasar tu variable al argumento y
de la función, en lugar de a x
.
import seaborn as sns
# Swarm plot
sns.swarmplot(y = variable)
Tamaño de los puntos
El tamaño por defecto de los puntos del gráfico es 5. Sin embargo, el argumento size
permite elegir el tamaño más adecuado para tus datos.
import seaborn as sns
# Swarm plot
sns.swarmplot(y = variable,
size = 4)
Personalizar el color de fondo de los puntos
Por defecto, los puntos de un swarm plot de seaborn son azules, pero puedes personalizar su color estableciendo uno nuevo con el argumento color
de la función swarmplot
.
import seaborn as sns
# Swarm plot
sns.swarmplot(y = variable,
color = "green")
Grosor y color del borde de los puntos
Además, es posible personalizar el grosor (que por defecto es 0) y el color del borde de los puntos con linewidth
y edgecolor
, respectivamente.
import seaborn as sns
# Swarm plot
sns.swarmplot(y = variable,
edgecolor = "red",
linewidth = 0.5)
Si tienes una variable categórica que represente grupos puedes pasar tanto la variable numérica como la categórica a la función para crear un swarm plot por grupo en Python con seaborn.
import seaborn as sns
# Swarm plot
sns.swarmplot(x = grupo, y = variable)
# Equivalent to:
sns.swarmplot(x = "grupo", y = "variable", data = df)
Orientación
Ten en cuenta que si cambias el orden de las variables puedes crear un swarm plot horizontal por grupo.
import seaborn as sns
# Swarm plot
sns.swarmplot(y = grupo, x = variable)
Orden personalizado
Puede que te hayas dado cuenta de que el orden de los grupos de los gráficos anteriores era G3, G2, y G1, que corresponde con el orden de aparición de los grupos en la variable categórica (puedes comprobarlo en la tabla de la primera sección). Para alterar el orden puedes usar el argumento order
de la siguiente manera.
import seaborn as sns
# Swarm plot
sns.swarmplot(x = grupo, y = variable,
order = ["G1", "G2", "G3"])
Paleta de colores
El argumento palette
permite personalizar la paleta de colores del gráfico. Puedes pasar el nombre de una paleta de colores o un diccionario con los colores para cada grupo.
import seaborn as sns
# Swarm plot
sns.swarmplot(x = grupo, y = variable,
palette = "pastel")
Color en base a una segunda variable categórica
Si tu conjunto de datos contiene una segunda variable que represente grupos puedes pasarla al argumento hue
para colorear cada grupo en base a dichos subgrupos.
import seaborn as sns
# Swarm plot
sns.swarmplot(x = grupo, y = variable,
hue = grupo2)
Swarm plot por grupo y subgrupo
En el escenario anterior también puedes establecer el argumento dodge
como True
, de modo que las observaciones se separarán en base a las categorías del segundo grupo.
import seaborn as sns
# Swarm plot
sns.swarmplot(x = grupo, y = variable,
hue = grupo2, dodge = True)
También te puede interesar