2011-04-04 10 views
5

Estoy usando matplotlib de python para hacer algunos contornos usando las funciones de contorno y contorno. Todos funcionan bien cuando se usa show, pero cuando trato de usar draw() dentro de un método, obtengo la ventana matplotlib pero no el gráfico. La llamada show() se realizará mucho más tarde en el código y en un método diferente, y me gustaría mostrar un gráfico en el momento en que se hace con draw(), sin tener que esperar hasta el show más tarde(). ¿Qué estoy haciendo mal?matplotlib dibujar mostrando nada

Gracias.

Respuesta

2

IIRC, Debería poder llamar a fig.show() varias veces. Además, consulte usando ipython (ipython -pylab) y http://matplotlib.sourceforge.net/users/shell.html

+0

Gracias por su respuesta. El problema es que no estoy usando un entorno interactivo; esta es una simulación en un script. Y el problema con las llamadas show varias veces es que show() está bloqueando, y necesito que el programa siga funcionando después de mostrar el gráfico sin la intervención del usuario. – Ivan

+0

Ah, a la derecha. No estoy seguro, entonces. Pensamiento aleatorio: si no puedes hacer esto con las instalaciones de trazado, siempre puedes exportar el gráfico a un archivo de imagen y pasarlo alrededor de – dfb

+0

Ok, gracias de todos modos. Intento evitar exactamente eso: necesito un gráfico para decidir si los resultados se guardarán o no. – Ivan

7

¿Ha activado el modo interactivo usando ion()? Las siguientes obras para mí en OSX, utilizando el backend Tk y que va desde la línea de comandos de la shell:

import matplotlib.pyplot as plt 

plt.ion() 
plt.figure() 
for i in range(10): 
    plt.plot([i], [i], 'o') 
    plt.draw() 
raw_input("done >>") 

es decir, como lo hace cada bucle, se ve el cambio de trama (es decir, se pone redibujado), ya que cada punto se agrega. Aquí, por cierto, si en cambio llamo al plt.ioff(), no veo la figura ni ninguna actualización.

+0

Si ejecuto ese código me sale un fallo del kernel ... :( –

+1

@andi: Creo que algo probablemente se haya configurado incorrectamente en su entorno. Simplemente volví a ejecutar esto para comprobarlo y todavía funciona para mí, pero ahora, Más de 4 años después usando una computadora diferente, versiones, entorno, etc. Si no puede hacer que funcione, sugiero hacer otra pregunta con más detalles (por ejemplo, plt.ion() funciona para usted en otros casos, qué versiones estás usando, etc.) – tom10

+0

¡Estás absolutamente en lo cierto! Reinstaló Anaconda y funciona perfectamente. Lo siento. –

Cuestiones relacionadas