Skip to main content
 首页 » 编程设计

python之数据到树状图并返回

2025年05月04日8yxwkf

我觉得这是一个非常简单的问题,但我想不通。

我有一小部分轨迹,我正尝试使用 scipi hcluster 对其进行聚类。

我在这方面是成功的

    from hcluster import linkage, dendrogram 
 
    l = linkage(matrix) 
    d = dendrogram(l) 
    show() 

但是我不知道如何将树状图分配的颜色映射回原始轨迹。树状图具有以下键 ['ivl'、'dcoord'、'leaves'、'color_list'、'icoord']。根据文档,“ivl”是印在图底部的一组标签,由于字体很小,因此无法阅读。

我试过以下方法

    for index, label in enumerate(d['ivl']): 
        print 'trajectory #%s has color %s' % (label, d['color_list'][index]) 

然而,这会爆炸,因为 color_list 中的颜色比 ivl 中的标签少一种。当我查看树状图时,我可以清楚地看到 2 个绿色、2 个红色、3 个洋红色等。但是树状图告诉我并非如此

    from collections import Counter         
    Counter(d['color_list']) 
    Counter({'y': 68, 'b': 18, 'm': 2, 'c': 1, 'g': 1, 'r': 1}) 

最后是我的问题。这个可怕的结构是什么?我实际上如何通过树状图获得分配给每个轨迹的颜色?

请您参考如下方法:

我有同样的问题并找到了你的帖子。希望你现在已经找到了答案,因为已经几个月了,但以防万一其他人也遇到这个问题: 您可以使用函数 fcluster 来获取集群: http://docs.scipy.org/doc/scipy/reference/generated/scipy.cluster.hierarchy.fcluster.html#scipy.cluster.hierarchy.fcluster

fcluster(Z,0.7*max(Z[:,2]),'distance') 

应将 fcluster 参数与默认树状图参数相匹配。

希望这能奏效!