Swarm plot en seaborn

Simulación de datos

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}

Bee swarm en seaborn con 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 o bee swarm en Python con seaborn

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)

Swarm plot vertical en Python

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)

Cambiar el tamaño de los puntos de un swarm plot en seaborn

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

Cambiar el color de las observaciones de un bee swarm en Python

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)

Color y grosor de los bordes de los puntos de un swarm plot en seaborn

Swarm plot por grupo en seaborn

Swarm plot por grupo en Python con seaborn

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)

Swarm plot horizontal por grupo en seaborn

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 de los grupos del swarm plot por grupo en Python

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

Cambiar la paleta de colores en la función swarmplot

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 del swarmplot en base a una segunda variable categórica

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 tipo dodge en seaborn

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)
Storytelling con Datos

Visualización de datos para profesionales

Comprar en Amazon
Data Sketches

A journey of imagination, exploration, and beautiful data visualizations

Comprar en Amazon

También te puede interesar