我需要从树状图中获取节点的高度我的计划是使用dcord/icord,但从物理上考虑所得图的高度和相应2d数组中的值。
根据这篇文章,dcord和icoord反映了树中节点的坐标。在scipy.cluster.hhierarchy.dendrogram文档中,icoord/dord的含义非常不明显。所以我无法回溯上发生的事情
感谢的任何见解
import numpy as np
import pandas as pd
from scipy.cluster import hierarchy
import matplotlib.pyplot as plt
data = [[24, 16], [13, 4], [24, 11], [34, 18], [41,
6], [35, 13]]
frame = pd.DataFrame(np.array(data),
columns=["a", "b"],
index=["Atlanta", "Boston", "Chicago", "Dallas", "Denver", "Detroit"])
Z = hierarchy.linkage(frame, 'single')
plt.figure()
dn = hierarchy.dendrogram(Z, labels=frame.index)
高度大概是[15,10,9,5],但我想让python把这个数组给我,而不是我盯着它看。
您可以从dn['dcoord']
中列表的第二个或第三个元素中提取该信息。
在这里,我已经运行了您的脚本。y坐标取自dn['dcoord']
:中每个列表的索引1
In [190]: [y[1] for y in dn['dcoord']]
Out[190]:
[5.0,
5.0990195135927845,
9.219544457292887,
10.198039027185569,
13.038404810405298]
正如我在评论中所指出的,你可以看到这些数据被用来增强这个答案中的树状图。