Dendrograma en plotly

Dendrogramas en plotly con create_dendrogram

Un dendrograma, también llamado árbol jerárquico, representa la salida de un clustering o agrupamiento jerárquico como un árbol. La función create_dendrogram del módulo figure_factory ejecuta y representa un clustering jerárquico de tus datos.

El módulo figure_factory es un módulo para gráficos complejos previo a la existencia de plotly express que todavía mantiene algunas funciones obsoletas y otras, como create_dendrogram, que todavía no tienen un equivalente en plotly express.

La función create_dendrogram toma como entrada una matriz de observaciones como arrays de arays. En el siguiente ejemplo tenemos 20 muestras y cada una de ellas tiene 5 dimensiones.

import plotly.figure_factory as ff
import numpy as np
np.random.seed(3)

# 20 observaciones, con 5 dimensiones cada una
X = np.random.rand(20, 5) 

fig = ff.create_dendrogram(X)
fig.update_layout(autosize = True)

fig.show()

Número de clusters

El número de clusters se puede seleccionar en base a la altura del dendrograma en la que se realiza la separación. Por defecto, la función crea un número razonable de clusters, pero puedes seleccionar una altura personalizada con color_threshold, como en el ejemplo siguiente.

import plotly.figure_factory as ff
import numpy as np
np.random.seed(3)

# 20 observaciones, con 5 dimensiones cada una
X = np.random.rand(20, 5)

fig = ff.create_dendrogram(X, color_threshold = 1.2)
fig.update_layout(autosize = True)

fig.show()

Etiquetas

Cada observación o muestra se puede etiquetar haciendo uso del argumento labels. Tendrás que especificar un array con tantos textos como observaciones haya.

import plotly.figure_factory as ff
import numpy as np
np.random.seed(3)

# 20 observaciones, con 5 dimensiones cada una
X = np.random.rand(20, 5)
text = [chr(x) for x in range(65, 85)] # Letras

fig = ff.create_dendrogram(X, labels = text)
fig.update_layout(autosize = True)

fig.show()

Personalización del color

El argumento colorscale se puede utilizar para personalizar los colores. Siguiendo la documentación original, por alguna razón es necesario un array con 8 colores, pero el séptimo será ignorado.

import plotly.figure_factory as ff
import numpy as np
np.random.seed(3)

# 20 observaciones, con 5 dimensiones cada una
X = np.random.rand(20, 5)
colors = ['red', 'blue', 'green', 'darkorange',
          'gold', 'lightcoral', 'orangered', 'brown']

fig = ff.create_dendrogram(X, colorscale = colors)
fig.update_layout(autosize = True)

fig.show()

Orientación

La orientación del dendrograma se puede personalizar con el argumento orientation, que por defecto es 'bottom', pero también puede ser 'left' (izquierda), 'right' (derecha) o 'top' (arriba), como se muestra en los siguientes ejemplos. Esto es muy útil si quieres agregar un dendrograma a los lados de un mapa de calor.

´“left” (izquierda)

import plotly.figure_factory as ff
import numpy as np
np.random.seed(3)

# 20 observaciones, con 5 dimensiones cada una
X = np.random.rand(20, 5) 

fig = ff.create_dendrogram(X, orientation = 'left')
fig.update_layout(autosize = True)

fig.show()

“right” (derecha)

import plotly.figure_factory as ff
import numpy as np
np.random.seed(3)

# 20 observaciones, con 5 dimensiones cada una
X = np.random.rand(20, 5) 

fig = ff.create_dendrogram(X, orientation = 'right')
fig.update_layout(autosize = True)

fig.show()

“top” (arriba)

import plotly.figure_factory as ff
import numpy as np
np.random.seed(3)

# 20 observaciones, con 5 dimensiones cada una
X = np.random.rand(20, 5) 

fig = ff.create_dendrogram(X, orientation = 'top')
fig.update_layout(autosize = True)

fig.show()
Data Sketches

A journey of imagination, exploration, and beautiful data visualizations

Comprar en Amazon

También te puede interesar