Dendrogram

Dendrogram

Categoría Jerarquía

Qué es

Árbol que muestra el resultado de un clustering jerárquico. Las ramas se unen a diferentes alturas indicando la distancia o disimilaridad entre grupos.

Para qué sirve

Para visualizar la estructura resultante de un análisis de clustering jerárquico o para mostrar clasificaciones taxonómicas.

Cómo leerlo

Anatomía

Producto de un clustering jerárquico aglomerativo: el algoritmo parte con cada elemento como su propio grupo y va fusionando, de a dos, los grupos más parecidos entre sí, hasta que todos terminan en un único grupo. Cada fusión queda registrada como un nodo interno del árbol, a la altura exacta de la distancia (o disimilitud) a la que ocurrió esa fusión —la llamada distancia cofenética—, el único atributo cuantitativo real del diagrama. El orden horizontal de las hojas, en cambio, es arbitrario: ningún método garantiza un orden particular, salvo el que evita que las ramas se crucen entre sí. Cada nodo interno representa un grupo formado por todas las hojas que cuelgan de él, no un dato individual, y la raíz, en la cima del árbol, contiene siempre al conjunto completo. El criterio de qué distancia usar entre grupos —enlace simple, completo, promedio, o uno que minimiza la varianza dentro de cada grupo al fusionar— no es un detalle menor: cambia la forma final del árbol completo, así que dos dendrogramas construidos sobre los mismos datos pueden verse muy distintos según qué criterio se haya usado.

Tronco de árbol muerto que se bifurca en niveles sucesivos de ramas cada vez más finas contra el cielo blanco: la lógica de un dendrograma, una raíz única que se divide progresivamente hasta las hojas

Por qué funciona

Fundamento perceptivo

Es el gráfico estándar para resultados de clustering jerárquico. La altura de cada unión indica cuán similares son los grupos que se fusionan.

Errores comunes

  • La altura de las ramas tiene significado estadístico

    no la trunques ni la modifiques por razones estéticas, aunque el orden horizontal de las hojas sí puede variar sin cambiar la interpretación.

Dónde se usa

Contextos de aplicación

Resultados de un clustering de clientes
01

Resultados de un clustering de clientes

El árbol muestra qué grupos se fusionan primero y a qué distancia.

Clasificación jerárquica de especies
02

Clasificación jerárquica de especies

Ramas que se separan según similitud: el parentesco hecho diagrama.

Agrupación de documentos similares
03

Agrupación de documentos similares

Textos parecidos terminan en la misma rama del árbol.

Cómo construirlo

El mismo gráfico, en 11 librerías open source

Cada librería resuelve las mismas decisiones de diseño, como la escala, el espaciado entre barras o la inserción de la etiqueta de valor, de un modo distinto. Algunas las automatizan; otras las dejan explícitas en el código, a criterio de quien lo escribe. Comparar once implementaciones con los mismos datos y el mismo color de marca aísla esa diferencia, que de otro modo queda oculta detrás de estilos visuales distintos.

Cinco marcas de smartphones agrupadas por parecido en participación de mercado

Fuente: IDC Worldwide Quarterly Mobile Phone Tracker

Matplotlib License (estilo BSD)
Matplotlib: gráfico de barras

Clustering jerárquico real (average linkage, distancia euclidiana) de 5 marcas de smartphones según su participación de mercado mundial en 4 trimestres (mismos datos que el ejemplo principal de esta ficha): IDC Worldwide Quarterly Mobile Phone Tracker. scipy.cluster.hierarchy.dendrogram() dibuja directo desde la matriz de enlace (no solo la calcula); ECharts tiene un tipo "tree" nativo que resuelve el layout solo; las demás 8 reutilizan las posiciones ya resueltas una sola vez con d3-hierarchy (hierarchy + cluster). scipy.cluster.hierarchy.dendrogram() SÍ es una función nativa de dibujo (no solo de cálculo): construye la matriz de enlace desde el clustering original y la dibuja directo.

import matplotlib.pyplot as plt
from scipy.cluster.hierarchy import dendrogram

# scipy.cluster.hierarchy.dendrogram() SI es una funcion nativa de
# dibujo (no solo de calculo) -- construye la matriz de enlace desde
# el clustering original y la dibuja directo, sin resolver el layout
# a mano como las demas librerias.
dendrogram(Z, labels=marcas, orientation="left", ax=ax)
ax.axis("off")
plt.show()

No disponible en esta librería

ApexCharts

No tiene un tipo dendrograma/árbol nativo ni una API de bajo nivel accesible desde fuera para dibujar conectores en ángulo recto a mano.

Herramientas para construirlo

No-code, desktop y plataformas web, con su licencia visible, abierta o comercial.

No-code
Observable Freemium
JavaScript
D3.js Open SourceECharts Open SourceHighcharts Comercial
Python
Plotly Open SourceMatplotlib Open SourceSeaborn Open SourceScipy Open Source
R
ggplot2 Open Sourceigraph Open Source

Con datos reales

Ejemplos de uso.

Gráficos relacionados

Variantes y alternativas cercanas.