HOWTO · Seaborn

Cómo establecer el tamaño de los marcadores en gráficos de dispersión de Seaborn

Aprende a controlar el área de los marcadores en gráficos de dispersión de Seaborn con `s`, asignar tamaños según una variable numérica y usar `size` y `sizes` para crear una escala y su leyenda.

En esta página

Para usar un mismo tamaño de marcador en todo un gráfico de dispersión de Seaborn, pasa s a sns.scatterplot; este parámetro usa las unidades de área de dispersión de Matplotlib (puntos cuadrados). Para variar el área de los marcadores según los datos, pasa una matriz numérica a s. Si quieres que Seaborn gestione la asignación y la leyenda, usa size para indicar la variable y sizes para definir el rango visual.

Método 1: Usar el parámetro s en scatterplot

Usa s cuando todos los puntos deban tener la misma área de marcador. El valor representa un área en puntos cuadrados, así que duplicarlo no duplica el ancho del marcador. Auméntalo o redúcelo hasta que los puntos se vean con claridad sin ocultarse entre sí.

Ejecuta este ejemplo. El título «Fixed marker area» y la etiqueta impresa «Marker area» están en inglés: el título indica que el área del marcador es fija y la etiqueta muestra su valor en puntos cuadrados.

import matplotlib.pyplot as plt
import seaborn as sns

x = [1, 2, 3, 4]
y = [2, 3, 2, 5]
area = 64

sns.scatterplot(x=x, y=y, s=area, color="teal", marker="o")
plt.xlabel("X")
plt.ylabel("Y")
plt.title("Fixed marker area")
print(f"Marker area: {area} pt^2")
plt.close()
Marker area: 64 pt^2

El valor fijo de s se aplica a todos los puntos de esta llamada. Añade una asignación con hue si quieres distinguir grupos por color; esta opción es independiente del área de los marcadores.

Método 2: Ajustar el tamaño de los marcadores con una variable

Para representar una columna numérica mediante el área de cada marcador, pasa a s un valor numérico por fila. Como esos valores representan áreas, ajusta la escala de la columna a un rango útil en lugar de usar las medidas originales sin más. Por ejemplo, con un DataFrame llamado data, s=data["party_size"] * 20 proporciona un área por fila; adapta el multiplicador a tus datos y al tamaño de la figura. Mantén alineados por fila los valores de x, y y tamaño.

Combínalo con hue="day" cuando quieras que el color represente otra variable categórica. Los valores de tamaño deben seguir siendo numéricos; asigna las categorías con hue en lugar de incorporarlas a s mediante una multiplicación.

Método 3: Personalizar el tamaño de los marcadores con parámetros adicionales

Usa la semántica size de Seaborn cuando quieras que la biblioteca asigne los tamaños de los marcadores según una variable y genere la leyenda correspondiente. Por ejemplo, con un DataFrame llamado data, llama a sns.scatterplot(data=data, x="total_bill", y="tip", size="size", sizes=(30, 180)). Aquí, size indica la columna que se asignará, mientras que sizes define las áreas mínima y máxima de los marcadores en puntos cuadrados. Los valores numéricos se escalan dentro de ese rango; una variable categórica de tamaño se representa mediante niveles discretos.

Puedes combinar size con hue para asignar colores a los grupos y con style para usar distintas formas de marcador. Usa palette para elegir los colores de una asignación con hue, o color para aplicar un único color si no necesitas esa asignación. Define marker para elegir una forma común. Estas opciones ayudan a diferenciar los grupos, pero conviene limitar la cantidad de recursos visuales para que la leyenda de tamaños siga siendo legible.

Conclusión

Elige s para definir un área fija o pasar una matriz numérica de áreas, una por punto. Elige size y sizes de Seaborn si quieres asignar los tamaños a partir de los datos, mostrar una leyenda de tamaños y controlar el rango. Recuerda que el tamaño del marcador representa un área y ajusta sus valores para que los puntos se distingan bien en la figura final.

Preguntas frecuentes

  1. ¿Cómo cambio el tamaño predeterminado de los marcadores en Seaborn? Pasa un área con s a sns.scatterplot, por ejemplo, s=64, para aplicar un tamaño común.

  2. ¿Pueden tener distintos tamaños los puntos de un mismo gráfico de dispersión? Sí. Pasa a s una matriz numérica con un valor por fila o usa size junto con sizes para que Seaborn asigne la escala y genere la leyenda.

  3. ¿Qué hace hue? Asigna una variable al color, normalmente para distinguir categorías. Es independiente de la asignación del tamaño de los marcadores.

  4. ¿Cómo puedo mejorar la legibilidad del gráfico? Ajusta el rango de áreas, usa colores distintos o estilos de marcador solo si ayudan a identificar grupos y etiqueta los ejes. Si los puntos se superponen, pueden ayudar los marcadores más pequeños o la transparencia.

  5. ¿Cómo guardo un gráfico de dispersión de Seaborn? Guarda la figura de Matplotlib antes de mostrarla o cerrarla; por ejemplo, llama a plt.savefig("scatterplot.png", dpi=150, bbox_inches="tight") después de crear el gráfico.