2017-05-11 9 views
0

ich ein Dendrogramm in scipy produziert haben, die wie folgt aussieht: leximin method dendrogramanzeigen Wurzel scipy dendrogram

Ich möchte die ‚Wurzel‘ des Dendrogramm-ein kleines Häkchen in der Mitte ziehen, gehen, von wo aus die beiden größten Cluster fusionieren bis z=0. Wie kann ich das effektiv zeichnen?

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

Z = array([[ 22.  , 23.  , 0.71094 , 2.  ], 
    [ 0.  , 1.  , 1.62068 , 2.  ], 
    [ 2.  , 33.  , 1.62068 , 3.  ], 
    [ 3.  , 34.  , 1.62068 , 4.  ], 
    [ 4.  , 5.  , 1.62068 , 2.  ], 
    [ 6.  , 36.  , 1.62068 , 3.  ], 
    [ 7.  , 37.  , 1.62068 , 4.  ], 
    [ 8.  , 9.  , 1.62068 , 2.  ], 
    [ 10.  , 39.  , 1.62068 , 3.  ], 
    [ 11.  , 40.  , 1.62068 , 4.  ], 
    [ 12.  , 13.  , 1.62068 , 2.  ], 
    [ 14.  , 42.  , 1.62068 , 3.  ], 
    [ 15.  , 43.  , 1.62068 , 4.  ], 
    [ 16.  , 17.  , 1.62068 , 2.  ], 
    [ 18.  , 45.  , 1.62068 , 3.  ], 
    [ 19.  , 46.  , 1.62068 , 4.  ], 
    [ 20.  , 21.  , 1.62068 , 2.  ], 
    [ 32.  , 48.  , 1.62068 , 4.  ], 
    [ 24.  , 25.  , 1.62068 , 2.  ], 
    [ 26.  , 50.  , 1.62068 , 3.  ], 
    [ 27.  , 51.  , 1.62068 , 4.  ], 
    [ 28.  , 29.  , 1.62068 , 2.  ], 
    [ 30.  , 53.  , 1.62068 , 3.  ], 
    [ 31.  , 54.  , 1.62068 , 4.  ], 
    [ 35.  , 41.  , 5.53516 , 8.  ], 
    [ 47.  , 52.  , 5.53516 , 8.  ], 
    [ 56.  , 38.  , 5.62891 , 12.  ], 
    [ 55.  , 57.  , 5.62891 , 12.  ], 
    [ 44.  , 58.  , 5.64453 , 16.  ], 
    [ 49.  , 59.  , 5.64453 , 16.  ], 
    [ 60.  , 61.  , 6.238281, 32.  ]]) 

hclust.dendrogram(Z) 

Antwort

2

Sie erhalten alles, was Sie benötigen, von dendrogram Rückgabewert.

icoord und dcoord enthalten die Koordinaten jeder gezeichneten Verknüpfung. Sie können den Mittelpunkt der horizontalen Verbindung der letzten Verbindung berechnen und von dort eine kurze Linie zeichnen.

ret = hclust.dendrogram(Z) 

xk = ret['icoord'][-1] 
yk = ret['dcoord'][-1] 

x = np.mean(xk[1:3]) 
y1 = yk[1] 
y2 = 7 # y-coordinate of endpoint 

plt.plot([x, x], [y1, y2], color=ret['color_list'][-1]) 

dendrogram with root

Verwandte Themen