【发布时间】:2015-07-30 19:30:17
【问题描述】:
我正在尝试在scipy.cluster.hierarchy.dendrogram 生成的树状图中标记节点。
我正在使用augmented dendrogram suggested here,尝试将示例中的集群间距离标签 (1.01,1.57) 替换为 ('a+c','a+b+c') 等字符串。
下面是一个示例链接矩阵
Z = array([[ 2, 7, 0, 2],
[ 0, 9, 0, 2],
[ 1, 6, 0, 2],
[ 5, 10, 0, 3],
[11, 12, 0, 4],
[ 4, 8, 0, 2],
[14, 15, 0, 6],
[13, 16, 0, 9],
[ 3, 17, 1, 10]])
对于这个例子,我创建了如下临时标签:
labels = [str(Z[ind,0].astype(int))+'+'+str(Z[ind,1].astype(int)) for ind in range(len(Z))]
并将augmented_dendrogram修改为:
def augmented_dendrogram(labels,*args, **kwargs):
ddata = cl.dendrogram(*args, **kwargs)
if not kwargs.get('no_plot', False):
for ind,(i, d) in enumerate(zip(ddata['icoord'], ddata['dcoord'])):
x = 0.5 * sum(i[1:3])
y = d[1]
plt.plot(x, y, 'ro')
plt.annotate(labels[ind], (x, y), xytext=(10,15),
textcoords='offset points',
va='top', ha='center')
return ddata
但是,生成的标签未与树状图中的节点对齐:
如何将标签与正确的节点对齐?
【问题讨论】:
标签: python matplotlib scipy hierarchical-clustering dendrogram