gpt4 book ai didi

python - 如何在 matplotlib 的树状图中添加颜色 - python 中的 scipy?

转载 作者:行者123 更新时间:2023-11-28 21:58:50 26 4
gpt4 key购买 nike

我有以下代码对数据执行分层聚类:

Z = linkage(data,method='weighted')
plt.subplot(2,1,1)
dendro = dendrogram(Z)
leaves = dendro['leaves']
print leaves
plt.show()

如何在树状图中所有的簇都具有相同的颜色(蓝色)。有没有一种方法可以针对聚类之间的相似性使用不同的颜色?

最佳答案

查看documentation , 看起来你可以通过 link_color_func 关键字或 color_threshold 关键字来获得不同的颜色。

编辑:

树状图着色方案的默认行为是,给定 color_threshold = 0.7*max(Z[:,2]) 为集群节点 k< 以下的所有后代链接着色 如果 k 是低于切割阈值的第一个节点,则颜色相同;否则,所有连接距离大于或等于阈值的节点的链接都是蓝色的[来自文档]。

这到底是什么意思?好吧,如果你看一个树状图,不同的集群连接在一起。两个集群之间的“距离”是它们之间链接的高度。 color_threshold 是一个高度,低于该高度新簇将具有不同的颜色。如果您的所有簇都是蓝色的,那么您需要提高您的 color_threshold。例如,

In [48]: mat = np.random.rand(10, 10)
In [49]: z = linkage(mat, method="weighted")
In [52]: d = dendrogram(z)
In [53]: d['color_list']
Out[53]: ['g', 'g', 'b', 'r', 'c', 'c', 'c', 'b', 'b']
In [54]: plt.show()

enter image description here

我可以检查默认的 color_threshold 是什么

In [56]: 0.7*np.max(z[:,2])
Out[56]: 1.0278719020096947

如果我降低 color_threshold,我会变得更蓝,因为更多链接的距离大于新的 color_threshold。您可以直观地看到这一点,因为 0.9 以上的所有链接现在都是蓝色的:

In [64]: d = dendrogram(z, color_threshold=.9)
In [65]: d['color_list']
Out[65]: ['g', 'b', 'b', 'r', 'b', 'b', 'b', 'b', 'b']
In [66]: plt.show()

enter image description here

如果我将 color_threshold 增加到 1.21.2 下面的链接将不再是蓝色。此外,青色和红色链接将合并为一种颜色,因为它们的父链接低于 1.2:

enter image description here

关于python - 如何在 matplotlib 的树状图中添加颜色 - python 中的 scipy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17493213/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com