2012-03-14 54 views
4

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

樹狀圖: enter image description here

謝謝。

回答

2

1. fig.gca().set_ylim(-0.4,1.2)這裏gca()返回當前axes對象,所以你可以給它一個名字

ax=fig.gca() 
ax.set_ylim(-0.4,ax.get_ylim()[1]) 
0
  • 您可以修剪樹形圖,並獲取使用fcluster您的集羣。 爲了以0.4的距離修剪:

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

  • 所得陣列(clusters)包含羣集標籤數據中的每一個觀察。您可以編寫使用numpy.savetxt數組:

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

  • 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')隱藏邊框。