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()
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()
También te puede interesar