Los datos del siguiente bloque de código serán usados a lo largo del presente tutorial.
import numpy as np
import pandas as pd
from random import choices
# Semilla
rng = np.random.RandomState(0)
# Simulación de datos
x = rng.uniform(0, 1, 500)
y = 5 * x + rng.normal(0, 2, size = 500)
grupo = np.where(x < 0.4, "A", np.where(x > 0.8, "C", "B"))
grupo2 = choices(["G1", "G2"], k = 500)
x = x + rng.uniform(-0.2, 0.2, 500)
# Conjunto de datos
df = {'x': x, 'y': y, 'grupo': grupo, 'grupo2': grupo2}
hue
y style
Gráfico de dispersión básico por grupo
Usando la función scatterplot
de seaborn es muy sencillo crear un gráfico de dispersión por grupo. Tendrás que pasar tu variable categórica al argumento hue
de la función.
import seaborn as sns
sns.scatterplot(x = x, y = y, hue = grupo)
Pasar las variables del data frame
Ten en cuenta que también puedes especificar un data frame y pasar las variables del mismo. En este escenario, la leyenda del gráfico también mostrará el nombre de la variable como título.
import seaborn as sns
sns.scatterplot(x = "x", y = "y", hue = "grupo",
data = df)
Orden de los niveles
El orden de la variable categórica se basa en el orden de aparición en los datos. Si quieres reordenar el orden de los colores puedes crear el orden que desees y pasarlo al argumento hue_order
, tal y como se muestra a continuación.
import seaborn as sns
hue_order = ["A", "B", "C"]
sns.scatterplot(x = x, y = y,
hue = grupo, hue_order = hue_order)
Distinta forma de los símbolos por grupo
Si pasas la variable categórica a style
los símbolos tendrán una forma diferente en base a los grupos que representan. Ten en cuenta que si mantienes un único color para todos los grupos los símbolos serán difíciles de reconocer, por lo que también deberías establecer el argumento hue
.
import seaborn as sns
sns.scatterplot(x = x, y = y,
style = grupo, hue = grupo)
Dos grupos en base al color y la forma de los símbolos
En caso de que tus datos contengan otra variable categórica puedes pasar una variable a style
y la otra a hue
. Sin embargo, deberías tener presente que la variable pasada a hue
será más fácil de leer que la otra.
import seaborn as sns
sns.scatterplot(x = x, y = y,
style = grupo, hue = grupo2)
Paleta de colores personalizada
Para agregar una paleta de colores personalizada puedes crear un diccionario con los colores deseados y pasarlo al argumento palette
de la función.
import seaborn as sns
colores = {'A': 'blue', 'B': 'red', 'C': 'green'}
sns.scatterplot(x = x, y = y,
hue = grupo, palette = colores)
Estilo de los símbolos
De manera similar, puedes cambiar la forma de los símbolos. Los posibles valores aceptados por la función scatterplot
son ','
, '.'
, 'o'
, 'd'
, 'h'
, 's'
, 'p'
, 'v'
, '^'
, '<'
, '>'
, '8'
, '*'
, 'H'
, 'D'
, 'P'
y 'X'
.
import seaborn as sns
estilos = {'A': 'p', 'B': 's', 'C': 'v'}
sns.scatterplot(x = x, y = y,
style = grupo, hue = grupo,
markers = estilos, palette = "Set1")
También te puede interesar