Некоторые вопросы о дендрограмме – питоне (Scipy)

Я новичок в 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') 

Дендрограмма: введите описание изображения здесь

Спасибо.

    1. fig.gca().set_ylim(-0.4,1.2) Здесь gca() возвращает текущий объект axes , поэтому вы можете дать ему имя

     ax=fig.gca() ax.set_ylim(-0.4,ax.get_ylim()[1]) 
    1. Вы можете обрезать дендрограмму и получить свои кластеры с помощью fcluster . Чтобы отрезать на расстоянии 0,4:

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

    2. Результирующий массив ( clusters ) содержит метку кластера для каждого наблюдения в ваших данных. Вы можете написать массив, используя numpy.savetxt :

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

    Граница показана из-за оси. Таким образом, вы можете удалить границу, используя следующую команду:

     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') скрывает границу.