我在用 Scipy-Cluster 在某些数据上生成分层聚类。作为应用程序的最后一步,我称 dendrogram 绘制聚类的功能。我正在使用内置Python 2.6.1和 这个matplotlib软件包. 。该程序运行良好,但最终,火箭船图标(据我了解,这是Python的GUI应用程序发射器)出现并立即消失而无需做任何事情。什么也没有显示。如果我在通话后添加“ RAW_INPUT”,它将永远在码头中上下弹跳。如果我从终端运行一个简单的Matplotlib示例应用程序,则运行良好。有人对此有任何经验吗?

有帮助吗?

解决方案

我在Ubuntu 10.04上也有同样的问题。为了获得从Ipython Interactive Console显示的图形,请从“ -Pylab”开关开始,该开关可以使Matplotlib的交互式使用:

ipython -pylab

要使您的图形在执行独立脚本期间显示,请使用matplotlib.pyplot.show call。这是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()

其他提示

用“ -pylab”开关调用ipython对我来说并没有改变。 (系统:软呢帽13)

尽管不是理想的,但我的解决方案是将结果图作为文件明确写入。例如:

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

希望这可以帮助任何遇到同一问题的人。

修正案:请谨慎使用Hcluster软件包的简短教程,尤其是在该教程中显示了几种类型的树状图绘图之后,IE,即

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" )

然后,expedendrogram.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" )

现在,生成的树状图像文件看起来像您期望它们的外观。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top