Gráfico de violín en seaborn con violinplot

Conjunto de datos de muestra

Los siguientes datos serán usados para crear las visualizaciones del presente tutorial. Copia y pega el siguiente código para poder reproducir los gráficos.

import numpy as np
import seaborn as sns
import random

# Simulación de datos
rng = np.random.RandomState(1)
variable = rng.normal(0, 2, size = 50)
random.seed(1)
grupo = random.choices(["G1", "G2", "G3"], k = 50)
grupo2 = random.choices(["A", "B"], k = 50)
df = {'variable': variable, 'grupo': grupo, 'grupo2': grupo2}

Gráfico de violín en seaborn con violinplot

Con seaborn es posible crear un gráfico de violín utilizando la función violinplot, como se muestra en los siguientes ejemplos.

import seaborn as sns

# Gráfico de violín
sns.violinplot(x = variable)

# Equivalent to:
sns.violinplot(x = "variable", data = df)

Gráfico de violín en Python con seaborn

Gráfico de violín vertical

Ten en cuenta que si pasas tu variable de interés al argumento y en lugar de al x el gráfico se mostrará de manera vertical en lugar de horizontal.

import seaborn as sns

# Gráfico de violín
sns.violinplot(y = variable)

Gráfico de violín vertical en Python con seaborn

Color del gráfico de violín

El color del fondo del violín se puede modificar con el argumento color de la función.

import seaborn as sns

# Gráfico de violín
sns.violinplot(x = variable,
               color = "green")

Color del violin plot en seaborn

Recortar las colas de la distribución

El argumento cut permite modificar la distancia para extender las densidades estimadas sobre los puntos de datos de los extremos. Si estableces este argumento a 0, el gráfico de violín se creará con las colas recortadas.

import seaborn as sns

# Gráfico de violín
sns.violinplot(x = variable,
               cut = 0)

Gráfico de violín en Python con las colas recortadas

Interior de la figura

Por defecto, dentro de los gráficos de violín se dibuja un gráfico de caja, pero también es posible agregar los cuartiles con líneas, las observaciones de diferentes maneras o eliminar el gráfico de caja. Para ello puedes usar el argumento inner de la función, como se muestra en los ejemplos siguientes.

Violin plot con cuartiles en Python

Cuartiles

import seaborn as sns

# Gráfico de violín
sns.violinplot(x = variable,
               inner = "quartile")

Gráfico de violín con puntos en seaborn

Puntos

import seaborn as sns

# Gráfico de violín
sns.violinplot(x = variable,
               inner = "point")

Agregar líneas representando observaciones en un gráfico de violín en Python

Línea para cada punto

import seaborn as sns

# Gráfico de violín
sns.violinplot(x = variable,
               inner = "stick")

Gráfico de violín en Python vacío

No mostrar nada dentro del violín

import seaborn as sns

# Gráfico de violín
sns.violinplot(x = variable,
               inner = None)

Ten en cuenta que también puedes establecer estos argumentos cuando creas gráficos de violín por grupo.

Bandwidth (parámetro ventana)

La función violinplot utiliza el método de Scott para calcular la ventana óptima para generar el gráfico de violín (bw = 'scott'). Sin embargo, también es posible elegir entre el método de Silverman o elegir un factor numérico que sirva para reescalar el bandwidth calculado mediante el método de Scott.

Método de Silverman

import seaborn as sns

# Gráfico de violín
sns.violinplot(y = variable,
               bw = "silverman")

Gráfico de violín con el método de Silverman en Python

Factor multiplicativo

import seaborn as sns

# Gráfico de violín
sns.violinplot(y = variable,
               bw = 0.25)

El argumento bw de violinplot

Gráfico de violín por grupo

Gráfico de violín por grupo en Python con seaborn

Si pasas una variable categórica al argumento x o y y una numérica al otro argumento puedes crear gráficos de violín en base a grupos. Ten en cuenta que puedes cambiar el orden por defecto pasando una lista al argumento order con el orden deseado.

import seaborn as sns

# Gráfico de violín
sns.violinplot(x = grupo, y = variable)

Violin plot por grupo y subgrupo en seaborn con hue

Color por subgrupo

Si pasas una segunda variable categórica al argumento hue los gráficos de violín se dividirán por grupo y subgrupo, tal y como muestra la siguiente imagen.

import seaborn as sns

# Gráfico de violín
sns.violinplot(x = grupo, y = variable,
               hue = grupo2)

Solapar gráficos de violín en seaborn

Cuando se agrega una segunda variable, es posible solapar los violines de los subgrupos, tan solo es necesario establecer el argumento dodge como False.

import seaborn as sns

# Gráfico de violín
sns.violinplot(x = grupo, y = variable,
               hue = grupo2,
               dodge = False)

Dividir los gráficos de violín en Python

Una alternativa a las opciones anteriores es establecer split = True, de modo que los gráficos de violín muestren en cada uno de sus lados la estimación para cada subgrupo, como en el ejemplo siguiente.

import seaborn as sns

# Gráfico de violín
sns.violinplot(x = grupo, y = variable,
               hue = grupo2,
               split = True)

Cambiar la paleta de colores de un gráfico de violín hecho con seaborn

Por último, si quieres personalizar la paleta de colores de los violines puedes pasar el nombre de una paleta o un diccionario que contenga los colores para cada grupo al argumento palette.

import seaborn as sns

# Gráfico de violín
sns.violinplot(x = grupo, y = variable, 
               palette = "Set2")
Fundamentals of Data Visualization

A Primer on Making Informative and Compelling Figures

Comprar en Amazon
Data Sketches

A journey of imagination, exploration, and beautiful data visualizations

Comprar en Amazon

También te puede interesar