2010-06-03 82 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") 

现在,生成的树状图图像文件将看起来像您期望的样子。