Gráfico de dispersión por grupo en seaborn

Conjunto de datos

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}

Gráfico de dispersión por grupo con los argumentos 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)

Gráfico de dispersión por grupo en seaborn

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)

Gráfico de dispersión en base a una variable categórica en seaborn

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)

Orden de los grupos o niveles de un gráfico de dispersión en seaborn

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)

Gráfico de dispersión con símbolos por grupo en seaborn

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)

Gráfico de dispersión de dos grupos en seaborn

Personalización del color y de los símbolos

Selección de color para cada grupo de un gráfico de dispersión hecho con seaborn en Python

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)

Cambiar la forma de los símbolos en base a los grupos en seaborn

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

A journey of imagination, exploration, and beautiful data visualizations

Comprar en Amazon

También te puede interesar