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
-
¿Cómo cambio el tamaño predeterminado de los marcadores en Seaborn? Pasa un área con
sasns.scatterplot, por ejemplo,s=64, para aplicar un tamaño común. -
¿Pueden tener distintos tamaños los puntos de un mismo gráfico de dispersión? Sí. Pasa a
suna matriz numérica con un valor por fila o usasizejunto consizespara que Seaborn asigne la escala y genere la leyenda. -
¿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. -
¿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.
-
¿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.