Dendrogramm, das von scipy-cluster generiert wird, wird nicht angezeigt

Ich verwende scipy-cluster , um ein hierarchisches Clustering auf einigen Daten zu erzeugen. Als letzter Schritt der Anwendung rufe ich die dendrogram Funktion auf, um das Clustering zu zeichnen. Ich laufe auf Mac OS X Snow Leopard mit dem eingebauten Python 2.6.1 und diesem matplotlib Paket . Das Programm läuft gut, aber am Ende der Rocket Ship Icon (wie ich verstehe, das ist der Launcher für GUI-Anwendungen in Python) zeigt sich und verschwindet sofort, ohne etwas zu tun. Nichts wird gezeigt. Wenn ich nach dem Aufruf einen 'raw_input' hinzufüge, dann springt er für immer auf den Dock. Wenn ich eine einfache Beispielanwendung für matplotlib vom Terminal aus läuft, läuft es gut. Hat jemand irgendwelche Erfahrungen dazu?

  • Wie kann ich chinesische Etiketten mit scipy.cluster.hierarchy.dendrogramm zeichnen? Ich habe die Etiketten bereits mit 'utf-8' verschlüsselt
  • Scipy verknüpfung format
  • Wie man hierarchische Clustering-Dendrogramme in scipy / matplotlib aufnimmt und annotiert
  • Dendrogramm generiert durch Scipy-Cluster-Anpassung
  • 2 Solutions collect form web for “Dendrogramm, das von scipy-cluster generiert wird, wird nicht angezeigt”

    Ich hatte das gleiche Problem auf Ubuntu 10.04. Um Grafiken aus der ipython interaktiven Konsole anzuzeigen, starten Sie es mit dem "-Pylab" -Schalter, der die interaktive Nutzung von matplotlib ermöglicht:

     ipython -pylab 

    Um Ihre Grafiken während der Ausführung eines eigenständigen Skripts anzuzeigen, verwenden Sie matplotlib.pyplot.show call. Hier ist ein Beispiel von hcluster homepage, die erste und letzte Zeile sind die bedeutenden Bits hier:

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

    Aufruf von ipython mit "-Pylab" Schalter machte keinen Unterschied für mich. (System: Fedora 13)

    Obwohl nicht ideal, war meine Lösung, explizit die daraus resultierende Figur als Datei zu schreiben. Beispielsweise:

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

    Hoffe, das hilft jedem, der in das gleiche Problem läuft.

    Änderungsantrag: Sei vorsichtig mit dem Kopieren und Einfügen mit dem kurzen Tutorial des hcluster-Pakets, vor allem, wenn du pylab.savefig () nach mehreren im DTutorial dargestellten Dendrogramm-Zeichnung nennst

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

    Dann wird exampleDendrogram.png sowohl das Single-Linkage-Dendrogramm als auch das Complet-Linking-Dendrogramm in der gleichen Figur enthalten, und sie werden sich wahrscheinlich kreuzen und wie ein Chaos aussehen.

    Wenn du so dumm bist wie ich, verbringst du 30-180 Minuten in Verwirrung darüber, wie man richtig hcluster benutzt, wenn es eigentlich nur eine Frage des Zurücksetzens von Matplotlib zwischen Dendrogramm-Anrufen ist:

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

    Nun werden die daraus resultierenden Dendrogramm-Bilddateien aussehen, wie man sie erwartet hat.

    Python ist die beste Programmiersprache der Welt.