我使用dendogram
中的scipy.cluster.hierarchy
函数生成树形图。我创建了树形图并使用它绘制它:
linkage_matrix = ward(dist)
dendrogram(linkage_matrix, orientation="left", labels=names)
plt.tight_layout()
plt.show()
到目前为止一切正常。我想要做的是更新树形图的叶标签并绘制新的树状图。我试过两种方法:
leaf_label_func
:here 但这不太好用。我收到n
不存在的错误,实际上是True。函数中没有n
。
`
linkage_matrix = ward(dist)
dend = dendrogram(linkage_matrix, orientation="left", labels=names)
leaf_names = dend['ivl']
for idx, item in enumerate(leaf_names):
if 'c' in item:
item = item+'_c'
leaf_names[idx] = item
if 'i' in item:
item = item+'_i'
leaf_names[idx] = item
dend['ivl'] = leaf_names
plt.tight_layout()
plt.show()
`
然而,显示的图仍然是树形图的旧版本,但如果我print(dend)
,新的叶子名称似乎就在那里。我在这做错了什么?
答案 0 :(得分:0)
更新dendogram
的示例,您可以根据自己的需要进行更新:
from matplotlib import pyplot as plt
from scipy.cluster.hierarchy import dendrogram, linkage
import numpy as np
from pylab import *
import time
ion()
for i in range(10):
#update here your dendogram values :
dist=[12.12,15.485,18.45,4.4,13.684,float(i+1)]
Z=linkage(dist)
# calculate it again :
dendrogram(Z, orientation="left")
# draw it again :
draw()
#wait 1 second between two update :
pause(1)