Domanda

SciPy-cluster per generare un clustering gerarchico su alcuni dati. Come passo finale dell'applicazione, chiamo la funzione dendrogram per tracciare il clustering. Sono in esecuzione su Mac OS X Snow Leopard utilizzando il built-in Python 2.6.1 e questo pacchetto matplotlib . Il programma funziona bene, ma alla fine l'icona Rocket Ship (mi pare di capire, questo è il programma di avvio per le applicazioni GUI in Python) si presenta e svanisce immediatamente senza fare nulla. viene mostrato nulla. Se posso aggiungere un 'raw_input' dopo la chiamata, semplicemente rimbalza su e giù sul banco degli imputati per sempre. Se eseguo una semplice applicazione di esempio per matplotlib dal terminale funziona benissimo. Qualcuno ha qualche esperienza su questo?

È stato utile?

Soluzione

Ho avuto lo stesso problema su Ubuntu 10.04. Al fine di ottenere grafica per visualizzare da ipython console interattiva, avviarlo con interruttore "-pylab", che consente l'uso interattivo di matplotlib:

ipython -pylab

Per ottenere la grafica a display durante l'esecuzione di uno script locale, chiamata uso matplotlib.pyplot.show. Ecco un esempio dalla homepage hcluster, la prima e l'ultima linea sono i bit significativi qui:

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

Altri suggerimenti

Invocazione ipython con interruttore "-pylab" non ha fatto la differenza per me. (Sistema: Fedora 13)

Anche se non è l'ideale, la mia soluzione era di scrivere esplicitamente la cifra risultante come file. Ad esempio:

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

Spero che questo aiuti chiunque è in esecuzione nello stesso problema.

Emendamento:. Fate attenzione a semplicemente utilizzando la copia-e-incolla con breve tutorial del pacchetto hcluster, in particolare in che se si chiama pylab.savefig () dopo alcuni tipi di dendrogram disegno riportato nel tutorial, cioè

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

Poi exampleDendrogram.png conterrà sia il dendrogramma singolo collegamento e il dendrogramma completa-linkage nella stessa figura, e saranno probabilmente cross-croce e apparire come un pasticcio.

Se sei stupido come me, si spenderà 30-180 minuti in confusione su come usare correttamente hcluster, quando in realtà è solo una questione di reset matplotlib tra le chiamate Dendrogramma:

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

Ora, i file immagine risultanti dendrogram sarà simile a quello che li aspetta a guardare come.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top