数据到树状图并返回

Posted

技术标签:

【中文标题】数据到树状图并返回【英文标题】:Data to dendrogram and back 【发布时间】:2012-08-23 04:35:14 【问题描述】:

我觉得这是一个非常简单的问题,但我无法弄清楚。

我有一小部分轨迹,我正在尝试使用 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)

所以最后我的问题。这个可怕的结构是什么?我如何真正获得树状图分配给每个轨迹的颜色?

【问题讨论】:

【参考方案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 参数与默认的树状图参数匹配。

希望这行得通!

【讨论】:

以上是关于数据到树状图并返回的主要内容,如果未能解决你的问题,请参考以下文章

关于有层级关系时返回前端树状json

使用树状图可视化聚类

树状数组

树状结构的数据的处理方法

二维树状数组

D3树状图异步按需加载数据