2010-06-03 36 views
13

我正在使用scipy-cluster在某些數據上生成分層聚類。作爲應用程序的最後一步,我稱dendrogram函數來繪製聚類。我使用內置的Python 2.6.1和this matplotlib package在Mac OS X Snow Leopard上運行。該程序運行良好,但最後Rocket Ship圖標(據我所知,這是python GUI應用程序的啓動程序)顯示並立即消失,無需執行任何操作。沒有顯示。如果我在通話後添加'raw_input',它會永遠在碼頭上下跳動。如果我從終端運行一個簡單的matplotlib示例應用程序,它運行良好。有沒有人有這方面的經驗?由scipy-cluster生成的樹形圖不顯示

回答

16

我在Ubuntu 10.04上遇到了同樣的問題。 爲了讓顯卡從IPython的交互式控制檯顯示,用「-pylab」開關,這使得交互使用matplotlib的啓動:

ipython -pylab 

爲了讓您的顯卡到獨立腳本的執行過程中顯示,請使用matplotlib.pyplot.show調用。下面是hcluster主頁爲例,第一和最後一行是這裏的顯著位:

from matplotlib.pyplot import show 

from hcluster import pdist, linkage, dendrogram 
import numpy 
from numpy.random import rand 

X = rand(10,100) 
X[0:5,:] *= 2 
Y = pdist(X) 
Z = linkage(Y) 
dendrogram(Z) 

show() 
4

調用IPython中與「-pylab」開關不有所作爲我。 (系統:Fedora 13)

雖然不是很理想,但我的解決方案是將結果數字明確寫入文件。 例如:

... 
dendrogram(Z) 
pylab.savefig("temp.png") 

希望這有助於誰是運行到同一個問題的人。

修訂:要小心使用簡單的複製和粘貼與hcluster包的簡短教程,特別是如果你調用pylab.savefig()後,本教學中幾種類型的樹狀圖的,即

distMat = # whatever distance matrix you have 
dendrogram(linkage(distMat)) 
pylab.savefig("exampleDendrogram.png") 
dendrogram(linkage(distMat, method="complete")) #instead of default "single" 
pylab.savefig("exampleDendrogram.png") 

然後exampleDendrogram.png將包含同一圖中的單鏈樹形圖和完全鏈接樹形圖,並且它們可能會交叉並看起來像一團糟。

如果你是愚蠢的我,你會花30-180分鐘混淆如何正確使用hcluster,當它實際上只是一個樹狀圖之間的復位matplotlib的事呼籲:

distMat = # whatever distance matrix you have 
dendrogram(linkage(distMat)) 
pylab.savefig("exampleDendrogram1.png") 
pylab.cla() 
dendrogram(linkage(distMat, method="complete")) #instead of default "single" 
pylab.savefig("exampleDendrogram2.png") 

現在,生成的樹狀圖圖像文件將看起來像您期望的樣子。