Scipy / Matplotlib中的树状图节点注释

问题描述 投票:3回答:1

我正在尝试标记由scipy.cluster.hierarchy.dendrogram生成的树状图中的节点。

我正在使用augmented dendrogram suggested here,试图用('a + c','a + b + c')之类的字符串替换示例中的集群间距离标签(1.01、1.57)。] >

下面是一个示例链接矩阵

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))]

并将增强型树状图修改为:

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

但是,结果标签未与树状图中的节点对齐:

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS81SUVpQS5wbmcifQ==” alt =“在此处输入图像描述”>

如何将标签对准正确的节点?

我正在尝试标记scipy.cluster.hierarchy.dendrogram生成的树状图中的节点。我正在使用此处建议的增强树状图,试图替换集群间距离...

python matplotlib scipy hierarchical-clustering dendrogram
1个回答
0
投票

如果我正确理解了您的问题,那么您正在scipy的'leaves'函数返回的字典中查找字段dendrogram。根据scipy的documentation

© www.soinside.com 2019 - 2024. All rights reserved.