我需要从树状图中获得节点的高度,我的计划是使用dcoord/icoord,但物理上考虑的是结果图中的高度和相应的二维数组中的值。
根据this post的说法,dcoord和icoord反映了树中节点的坐标。在scipy.cluster.hierarchy.dendrogram documentation中,icoord/dcoord的含义相当模糊。所以我不能追溯到底发生了什么
将会非常感谢你的见解
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给我这个数组,而不是让我看它。
发布于 2021-07-11 15:13:31
您可以从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]正如我在评论中指出的那样,您可以看到这些数据被用来增强this answer中的树状图。
https://stackoverflow.com/questions/68333763
复制相似问题