Question

J'utilise scipy cluster pour générer une classification hiérarchique sur certaines données. En tant que dernière étape de l'application, j'appelle la fonction dendrogram pour tracer le regroupement. Je courais sous Mac OS X Snow Leopard en utilisant Python intégré 2.6.1 et ce paquet matplotlib . Le programme fonctionne très bien, mais à la fin l'icône Rocket Ship (que je comprends, c'est le lanceur pour les applications graphiques en python) apparaît et disparaît immédiatement sans faire quoi que ce soit. Rien est affiché. Si j'ajoute un « raw_input » après l'appel, il rebondit juste en haut et en bas dans la station d'accueil pour toujours. Si je lance une application simple de l'échantillon pour matplotlib du terminal, il fonctionne très bien. Quelqu'un at-il des expériences à ce sujet?

Était-ce utile?

La solution

J'ai eu le même problème sur Ubuntu 10.04. Afin d'obtenir les graphiques à afficher à partir ipython console interactive, démarrer avec interrupteur « -pylab », qui permet l'utilisation interactive de matplotlib:

ipython -pylab

Pour obtenir votre carte graphique à afficher lors de l'exécution d'un script autonome, appelez l'utilisation de matplotlib.pyplot.show. Voici un exemple de page d'accueil hcluster, la première et la dernière ligne sont les bits significatifs ici:

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

Autres conseils

Invoquer ipython avec interrupteur « -pylab » n'a pas fait une différence pour moi. (Système: Fedora 13)

Bien que pas idéal, ma solution était d'écrire explicitement le chiffre obtenu en tant que fichier. Par exemple:

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

Espérons que cela aide quelqu'un qui exécute le même problème.

Modification. Attention à l'aide simplement copier-coller avec bref tutoriel du paquet hcluster, notamment en ce que si vous appelez pylab.savefig () après plusieurs types de dendrogramme dessin présentés dans le tutoriel, i.e.

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

Alors exampleDendrogram.png contiendra à la fois le dendrogramme unique de liaison et le dendrogramme complet-lien dans la même figure, et ils vont probablement cross-cross et ressemblent à un gâchis.

Si vous êtes aussi stupide que moi, vous passerez 30-180 minutes dans la confusion sur la façon d'utiliser correctement hcluster, quand il est en fait juste une question de remise à zéro matplotlib entre les appels dendrogramme:

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

Maintenant, les fichiers d'image dendrogramme résultant ressemblera à ce que vous attendiez à ressembler.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top