font - Matplotlib python show() regresa inmediatamente
plot title font size matplotlib (4)
Creo que usar show(block=True)
debería solucionar tu problema.
Tengo un script de python simple que traza algunos gráficos en la misma figura. Todos los gráficos son creados por draw () y al final llamo a la función show () para bloquear.
El script solía funcionar con Python 2.6.6, Matplotlib 0.99.3 y Ubuntu 11.04. Intenté ejecutarlo en Python 2.7.2, Matplotlib 1.0.1 y Ubuntu 11.10 pero la función show () regresa inmediatamente sin esperar a matar la figura.
¿Es esto un error? ¿O una nueva característica y tendremos que cambiar nuestros scripts? ¿Algunas ideas?
EDITAR: Mantiene la trama abierta en modo interactivo, es decir, python -i ..., pero solía funcionar sin eso, y trató de tener plt.ion () en el script y ejecutarlo en modo normal, pero sin suerte .
Para replicar el comportamiento matplotlib.show () con el backend tkagg cuando se llama a show () en el objeto Figure:
import Tkinter as Tk
import matplotlib.pyplot as plt
fig = plt.figure()
... your plot commands...
fig.show()
Tk.mainloop()
Tenía el problema inverso , y parece que matplotlib funcionará en modo interactivo o no interactivo en función de una serie de cosas que no pude rastrear (una vía en IDLE, otra en la consola del sistema, una vía en la consola spyder normal, otra en uno dedicado ...)
Esto funcionó para mí:
import matplotlib
matplotlib.interactive(False)
(En realidad, quería el modo interactivo, pero en su caso el inverso debería ayudar.) ion()
y ioff()
deberían hacer lo mismo, pero lo anterior está en el nivel de matplotlib, no solo pyplot o pylab. Esto funciona para mí aunque estoy (más tarde) importando pyplot por separado y nunca vuelva a llamar a matplotlib como tal. Estoy pensando que plt.ion () solo tiene un efecto en pyplot, no otros componentes de matplotlib que pueden o no estar involucrados cuando se usa pyplot.
Este método funciona para mí en Windows 7, usando Python 2.65 con matplotlib 0.99 y Python 2.75 con matplotlib 1.3.1, en todas las consolas python e IDE disponibles en ambos sistemas (64 bits, ambos). Sin embargo, no funcionó en Linux (SuSe 11.3, 64 bit), así que definitivamente hay alguna dependencia de la plataforma en juego aquí.
Tuve este mismo problema, y fue causado llamando a show()
en el objeto Figure en lugar del objeto pyplot.
Código incorrecto. Hace que el gráfico parpadee en la pantalla por un breve instante:
import matplotlib.pyplot as plt
x = [1,2,3]
y = [5,6,7]
fig = plt.figure()
plt.plot(x, y)
fig.show()
La última línea debe ser la siguiente para mostrar el gráfico hasta que se descarte:
plt.show()