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")
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
threshpara 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_adjustpara controlar el ancho de banda.