Densidad en 2D con KDE y curvas de nivel

Visualize

Densidad en 2D con KDE y curvas de nivel

Creado: Última actualización: Tiempo de lectura: 1 min

Con seaborn.kdeplot podemos representar la densidad conjunta de dos variables mediante curvas de nivel o áreas rellenas. Resulta muy útil cuando un diagrama de dispersión está saturado de puntos.

import seaborn as sns
import matplotlib.pyplot as plt

penguins = sns.load_dataset("penguins").dropna(subset=["bill_length_mm", "bill_depth_mm"])

fig, ax = plt.subplots(figsize=(5.5, 4.5))
sns.kdeplot(
    data=penguins,
    x="bill_length_mm",
    y="bill_depth_mm",
    hue="species",
    fill=True,
    thresh=0.05,
    levels=6,
    alpha=0.6,
    ax=ax,
)

ax.set_xlabel("Longitud del pico (mm)")
ax.set_ylabel("Profundidad del pico (mm)")
ax.set_title("KDE en 2D por especie de pingüino")
ax.grid(alpha=0.2)

fig.tight_layout()
fig.savefig("static/images/visualize/distribution/kde2d.svg")

Cuando los diagramas de dispersión están saturados, el KDE en 2D resalta las zonas densas.

Pautas de lectura #

  • Cuanto más juntas estén las curvas, más datos se concentran en esa zona; la intensidad del color refuerza la frecuencia.
  • Ajusta thresh para eliminar contornos de densidad muy baja y mantener la figura limpia.
  • Con conjuntos masivos, el KDE puede ser costoso; prueba a muestrear datos o a modificar bw_adjust para controlar el ancho de banda.