我正在使用python 2.7.9。
我用scipy.cluster.hierarchy.dendrogram
来显示我的聚类结果,这里是树状图,一个问题是,我有大约200个数据,我看不清楚它们的标签。
...
z=linkage(dist, method='complete')
R=dendrogram(z, labels=mylabels)
1.我知道R["ival"]
有对应于叶节点的标签,但是在如此密集的图中匹配值和数据不是一件容易的工作。
2.我想提取一部分数据,比如左边的绿色链接,在这个比例下标签可以看得很清楚,我觉得这是一种很灵活的分析数据的方法,但是我不知道怎么做。
3.我使用leaf_label_func
。我的目标是:当一个数据真正属于一个类时--比如cups--显示它的部分名称/标签。2比如,如果一个模型有一个名称“cups_b1”,那么只显示“b1”。3这样,至少我可以一次看到我的数据的一个类别的位置。
def llf(id):
if id< nmodels:
mylabel=labels[id]
if mylabel.find("cups")!=-1:
index=mylabel.find("_")
outlabel=mylabel[index+1:]
return outlabel
else:
return "" #without the else part the function will return None, and that makes the output figure strange
R=dendrogram(z, leaf_label_func=llf, leaf_rotation=90 )
但即使这样,我也认不出标签。
1条答案
按热度按时间lvmkulzt1#
目前还没有一种很好的方法可以从树状图中直观地提取小细节。
在图形之外使用群集数据。
现在,您可以分别浏览每个群集。
另一个选项是在两个轴(x,y)上打印树状图,如代码here所示。然后,如果您一定要查看图表上的标签,则可以在x轴上打印一半标签,在y轴上打印一半标签。