5

我是 scipy 的新手,但我设法得到了预期的树状图。我还有一些问题;

  1. 在树状图中,一些点之间的距离是0但由于图像边界不可见。如何去除边框并将 y 轴的下限设为-1,使其清晰可见。例如,这些点之间的距离是0(13,17), (2,10), (4,8,19)
  2. 如何在特定距离上修剪/截断。例如修剪0.4
  3. 如何将这些集群(修剪后)写入文件

我的python代码:

import scipy
import pylab
import scipy.cluster.hierarchy as sch
import numpy as np

D = np.genfromtxt('LtoR.txt', dtype=None)
def llf(id):
    return str(id)
fig = pylab.figure(figsize=(10,10))
Y = sch.linkage(D, method='single')
Z1 = sch.dendrogram(Y,leaf_label_func=llf,leaf_rotation=90)
fig.show()
fig.savefig('dendrogram.png')

树状图: 在此处输入图像描述

谢谢你。

4

3 回答 3

2

1.fig.gca().set_ylim(-0.4,1.2)这里gca()返回当前axes对象,所以可以给它起个名字

ax=fig.gca()
ax.set_ylim(-0.4,ax.get_ylim()[1])
于 2012-03-14T19:33:17.823 回答
0
  1. 您可以使用fcluster修剪树状图并获取集群。要在 0.4 的距离处修剪:

    clusters = sch.fcluster(Y,t = 0.4,criterion = 'distance')

  2. 结果数组 ( clusters) 包含数据中每个观察值的集群标签。您可以使用numpy.savetxt编写数组:

    np.savetxt('clusters.txt', clusters, delimiter=',')

于 2015-05-19T17:25:05.750 回答
0

由于轴的原因,显示了边框。因此,您可以使用以下命令删除边框:

fig = plt.figure(figsize=(10, 8))
ax2 = fig.add_axes([0.3, 0.71, 0.6, 0.2])
Y = sch.linkage(D, method='ward')
Z2 = sch.dendrogram(Y)
ax2.set_xticks([])
ax2.set_yticks([])
ax2.axis('off')

ax.axis('off')隐藏边框。

于 2017-08-04T15:24:47.937 回答