【问题标题】:Some questions on dendrogram - python (Scipy)关于树状图的一些问题 - python (Scipy)
【发布时间】:2012-03-31 07:20:21
【问题描述】:

我是 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')

树状图:

谢谢。

【问题讨论】:

    标签: python scipy cluster-analysis dendrogram


    【解决方案1】:

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

    ax=fig.gca()
    ax.set_ylim(-0.4,ax.get_ylim()[1])
    

    【讨论】:

      【解决方案2】:
      1. 您可以使用fcluster 修剪树状图并获取您的集群。 在 0.4 的距离处修剪:

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

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

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

      【讨论】:

        【解决方案3】:

        显示边框是因为轴。因此,您可以使用以下命令删除边框:

        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') 隐藏边框。

        【讨论】:

          猜你喜欢
          • 2020-06-06
          • 1970-01-01
          • 2013-09-03
          • 2016-07-31
          • 1970-01-01
          • 1970-01-01
          • 2017-10-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多