Python scipy群集生成的树状图未显示
我正在使用生成一些数据的层次聚类。作为应用程序的最后一步,我调用函数来绘制集群。我在MacOSXSnowLeopard上运行,使用内置的Python 2.6.1和。该程序运行良好,但在最后,火箭飞船图标(据我所知,这是python中GUI应用程序的启动程序)出现并立即消失,而不做任何操作。没有显示任何内容。如果我在通话后添加一个“原始输入”,它将永远在码头上上下跳动。如果我从终端运行matplotlib的简单示例应用程序,它可以正常运行。有人对此有经验吗?我在Ubuntu 10.04上也遇到过同样的问题。 要从ipython交互控制台显示图形,请使用“-pylab”开关启动,该开关启用matplotlib的交互使用:Python scipy群集生成的树状图未显示,python,macos,matplotlib,scipy,dendrogram,Python,Macos,Matplotlib,Scipy,Dendrogram,我正在使用生成一些数据的层次聚类。作为应用程序的最后一步,我调用函数来绘制集群。我在MacOSXSnowLeopard上运行,使用内置的Python 2.6.1和。该程序运行良好,但在最后,火箭飞船图标(据我所知,这是python中GUI应用程序的启动程序)出现并立即消失,而不做任何操作。没有显示任何内容。如果我在通话后添加一个“原始输入”,它将永远在码头上上下跳动。如果我从终端运行matplotlib的简单示例应用程序,它可以正常运行。有人对此有经验吗?我在Ubuntu 10.04上也遇到过同
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()
用“-pylab”开关调用ipython对我来说没有什么不同。
(系统: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" )
然后exampledgendrogram.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" )
现在,生成的树状图图像文件将与您期望的一样