Scipy-Clusterによって生成された樹状図は表示されません
-
24-10-2019 - |
質問
私は使っている 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 Homepageの例を次に示します。最初と最後の行はここに重要なビットです。
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()に電話する場合、つまり、つまり、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" )
次に、ExampleDendRogram.pngには、同じ図の単一リンク樹状図と完全リンケージ樹状図の両方が含まれ、それらは交差して混乱のように見える可能性があります。
あなたが私と同じくらい愚かであれば、Hclusterを適切に使用する方法について混乱して30〜180分を費やします。実際には、樹状図コールの間に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" )
これで、結果の樹状図画像ファイルは、あなたが期待していたもののように見えます。