Líneas y segmentos en seaborn

Líneas verticales con las funciones axvline y vlines

Si quieres añadir una línea vertical a tu gráfico hecho con seaborn puedes utilizar la función axvline y establecer dónde quieres que se muestre la línea vertical con el argumento x. Los argumentos ymin e ymax van de 0 a 1 y representan el punto de inicio y final de la línea como porcentaje del tamaño del gráfico.

import numpy as np
import seaborn as sns

# Simulación de datos
x = np.random.RandomState(1).normal(0, 1, size = 50)

ax = sns.kdeplot(x = x, fill = True, color = "limegreen", alpha = 0.1)         
ax.axvline(x = 2,    # Línea en x = 2
           ymin = 0, # Desde la parte inferior
           ymax = 1) # hasta la superior

Agregar líneas verticales en seaborn

Si estableces otros valores a los argumentos ymin e ymax puedes crear un segmento. Recuerda que los valores que se pasan no representan los valores del eje Y.

import numpy as np
import seaborn as sns

# Simulación de datos
x = np.random.RandomState(1).normal(0, 1, size = 50)

ax = sns.kdeplot(x = x, fill = True, color = "limegreen", alpha = 0.1)         
ax.axvline(x = 2,      # Línea en x = 2
           ymin = 0.2, # 20%
           ymax = 0.8) # 80%

Segmento vertical en seaborn

En caso de que quieras agregar varias líneas a la vez puedes utilizar la función vlines. La principal ventaja de esta función es que puedes establecer valores máximos en función de los valores del eje Y. Ten en cuenta que también puedes crear una única línea con esta función.

import numpy as np
import seaborn as sns

# Simulación de datos
x = np.random.RandomState(1).normal(0, 1, size = 50)

ax = sns.kdeplot(x = x, fill = True, color = "limegreen", alpha = 0.1)         
ax.vlines(x = [-2, 0, 2], # Línea en x = [-2, 0, 2]
          ymin = 0,       # Inicio de todas las líneas
          ymax = [0.05, 0.4, 0.05]) # Final para cada línea

Añadir varias líneas verticales a la vez en seaborn

Líneas horizontales con las funciones axhline y hlines

De manera análoga, la función axhline permite agregar líneas horizontales a gráficos hechos con seaborn, pero tendrás que establecer dónde con el argumento y y los valores máximo y mínimo entre 0 y 1 con los argumentos xmin y xmax.

Adding an horizontal segment in seaborn

import numpy as np
import seaborn as sns

# Simulación de datos
x = np.random.RandomState(1).normal(0, 1, size = 50)

ax = sns.kdeplot(x = x, fill = True, color = "limegreen", alpha = 0.1)         
ax.axhline(y = 0.2,    # Línea en y = 0.2
           xmin = 0.1, # 10%
           xmax = 0.9) # 90%

En caso de que quieras agregar varias líneas horizontales a la vez o si prefieres especificar el valor mínimo y máximo de la línea en base a los valores del eje X puedes usar la función hlines, tal y como se muestra a continuación.

Agregar varias líneas horizontales al mismo tiempo con seaborn

import numpy as np
import seaborn as sns

# Simulación de datos
x = np.random.RandomState(1).normal(0, 1, size = 50)

ax = sns.kdeplot(x = x, fill = True, color = "limegreen", alpha = 0.1)         
ax.hlines(y = [0.1, 0.2, 0.3], # Valores del eje Y
          xmin = -2, # Desde x = -2
          xmax = 2)  # Hasta x = 2

La principal diferencia entre axvline, axhline y vlines, hlines es que las primeras funciones solo se pueden usar para agregar líneas una por una y los valores min y max deben ser entre 0 y 1, mientras que con las segundas puedes agregar varias líneas a la vez y especificar los puntos exactos donde quieres que se dibujen.

Personalización de las líneas

Las líneas se pueden personalizar de varias maneras. Dependiendo del tipo de función que estés utilizando los nombres o los argumentos son ligeramente diferentes, ya que el estilo y las líneas de los gráficos hechos con vlines y hlines se pueden personalizar con linestyles y colors, respectivamente, mientras que las funciones axhline y axvline proporcionan los argumentos linestyle y color.

import numpy as np
import seaborn as sns

# Simulación de datos
x = np.random.RandomState(1).normal(0, 1, size = 50)

ax = sns.kdeplot(x = x, fill = True, color = "limegreen", alpha = 0.1)         
ax.vlines(x = [-2, 2], ymin = 0, ymax = 0.4,
          linestyles = ["dashed", "solid"], colors = ["red", "blue"])  
ax.axhline(y = 0.2, xmin = 0, xmax = 1,
           color = "black", linestyle = "dashed")

Estilo y color de las líneas en seaborn

Better Data Visualizations

A Guide for Scholars, Researchers, and Wonks

Comprar en Amazon

También te puede interesar