Pregunta

estoy usando clúster generar una agrupación jerárquica en algunos datos. Como paso final de la aplicación, llamo al dendrogram función para trazar la agrupación. Me estoy ejecutando en Mac OS X Snow Leopard usando el Python 2.6.1 incorporado y este paquete matplotlib. El programa funciona bien, pero al final el ícono del barco de cohetes (como entiendo, este es el lanzador de aplicaciones de GUI en Python) aparece y desaparece inmediatamente sin hacer nada. No se muestra nada. Si agrego un 'raw_input' después de la llamada, solo rebota hacia arriba y hacia abajo en el muelle para siempre. Si ejecuto una aplicación de muestra simple para matplotlib desde el terminal, funciona bien. ¿Alguien tiene alguna experiencia en esto?

¿Fue útil?

Solución

Tuve el mismo problema en Ubuntu 10.04. Para que los gráficos se muestren desde la consola interactiva de Ipython, comience con el interruptor "-pylab", que permite el uso interactivo de matplotlib:

ipython -pylab

Para que sus gráficos se muestren durante la ejecución de un script independiente, use matplotlib.pyplot.show llamada. Aquí hay un ejemplo de la página de inicio de HCluster, la primera y última línea son los bits significativos aquí:

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

Otros consejos

Invocar Ipython con el interruptor "-pylab" no hizo la diferencia para mí. (Sistema: Fedora 13)

Aunque no es ideal, mi solución fue escribir explícitamente la figura resultante como un archivo. Por ejemplo:

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

Espero que esto ayude a cualquiera que se encuentre con el mismo problema.

Enmienda: tenga cuidado de simplemente usar copiar y pegar con el breve tutorial del paquete HCluster, especialmente en eso si llama pylab.saveFig () después de varios tipos de dibujo de dendrograma que se muestran en el tutorial, es decir

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

Luego, Ejempledendrogram.png contendrá tanto el dendrograma de enlace único como el dendrograma de enlace completo en la misma figura, y probablemente se entrecruzan y se verán como un desastre.

Si eres tan estúpido como yo, pasarás 30-180 minutos en confusión sobre cómo usar correctamente HCluster, cuando en realidad es solo una cuestión de restablecer matlotlib entre las llamadas de dendrograma:

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

Ahora, los archivos de imagen de Dendrogram resultantes se verán como lo que esperaba que se vieran.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top