/ / El dendrograma generado por scipy-cluster no se muestra: python, macos, matplotlib, scipy, dendrogram

El dendrograma generado por scipy-cluster no se muestra: python, macos, matplotlib, scipy, dendrogram

estoy usando agrupación para generar un agrupamiento jerárquico sobre algunos datos. Como paso final de la aplicación, llamo al dendrogram Función para trazar el agrupamiento. Estoy ejecutando en Mac OS X Snow Leopard utilizando el Python 2.6.1 incorporado y este paquete matplotlib. El programa funciona bien, pero al final elEl icono de Rocket Ship (según tengo entendido, este es el iniciador de aplicaciones GUI en python) aparece y desaparece inmediatamente sin hacer nada. No se muestra nada. Si agrego un "raw_input" después de la llamada, simplemente rebota hacia arriba y hacia abajo en el muelle para siempre. Si ejecuto una aplicación de ejemplo simple para matplotlib desde el terminal, funciona bien. ¿Alguien tiene alguna experiencia en esto?

Respuestas

16 para la respuesta № 1

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

ipython -pylab

Para obtener sus gráficos para mostrar durante elejecución de un script independiente, utilice matplotlib.pyplot.show call. Aquí hay un ejemplo de la página de inicio de hcluster, la primera y la ú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()

4 para la respuesta № 2

Invocar ipython con el interruptor "-pylab" no hizo una 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 si llama a pylab.savefig () después de varios tipos de dibujos de dendrogramas 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 exampleDendrogram.png contendrá tanto el dendrograma de enlace simple como el dendrograma de enlace completo en la misma figura, y probablemente se crucen y se vean como un desastre.

Si eres tan estúpido como yo, pasarás entre 30 y 180 minutos confundido sobre cómo usar correctamente hcluster, cuando en realidad solo es cuestión de restablecer matplotlib entre las llamadas de dendrogramas:

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 dendrogramas resultantes se verán como los esperaba.