Frage

ich benutze Scipy-Cluster Um ein hierarchisches Clustering für einige Daten zu generieren. Als letzter Schritt der Bewerbung rufe ich das auf dendrogram Funktion zum Aufstellen des Clustering. Ich renne auf Mac OS X Snow Leopard mit dem eingebauten Python 2.6.1 und Dieses Matplotlib -Paket. Das Programm läuft gut, aber am Ende ist das Rocket Ship Icon (wie ich verstehe, dies ist der Launcher für GUI -Anwendungen in Python) und verschwindet sofort, ohne etwas zu tun. Nichts wird gezeigt. Wenn ich nach dem Anruf ein 'RAW_Input' hinzufüge, springt es für immer im Dock auf und ab. Wenn ich eine einfache Beispielanwendung für Matplotlib aus dem Terminal ausführe, läuft es gut. Hat jemand Erfahrungen damit?

War es hilfreich?

Lösung

Ich hatte das gleiche Problem bei Ubuntu 10.04. Um Grafiken von Ipython Interactive Console aus zu erhalten, starten Sie sie mit "-Pylab" -Schalter, wodurch die interaktive Verwendung von Matplotlib ermöglicht wird:

ipython -pylab

Verwenden Sie Matplotlib.pyplot.show Call, damit Ihre Grafiken während der Ausführung eines eigenständigen Skripts angezeigt werden. Hier ist ein Beispiel von Hcluster Homepage, die erste und letzte Zeile sind die bedeutenden Teile 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()

Andere Tipps

Das Aufrufen von Ipython mit "-Pylab" -Schalter hat für mich keinen Unterschied gemacht. (System: Fedora 13)

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

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

Ich hoffe, dies hilft jedem, der auf das gleiche Problem trifft.

Änderung: Seien Sie vorsichtig, wenn Sie einfach mit dem kurzen Tutorial des Hcluster-Pakets Kopien-und Paste verwenden, insbesondere wenn Sie Pylab.savefig () nach mehreren Arten von Dendrogrammzeichnung im Tutorial aufrufen, dh nach mehreren Arten von Dendrogrammzeichnungen

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 enthält ein Beispiel für ein Linkage-Dendrogramm und das komplette Linkage-Dendrogramm in derselben Zahl, und sie werden wahrscheinlich kreuzen und wie ein Chaos aussehen.

Wenn Sie so dumm sind wie ich, werden Sie 30-180 Minuten verwirrt darüber verbringen, wie Sie Hcluster richtig verwenden können, wenn es sich tatsächlich nur darum, Matplotlib zwischen Dendrogram-Anrufen zurückzusetzen:

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

Jetzt sehen die resultierenden Dendrogramm -Bilddateien so aus, wie Sie erwartet haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top