Matplotlib no actualiza el gráfico cuando se utiliza en un IDE (PyCharm)

Soy nuevo en Python y acabo de instalar pyCharm y traté de ejecutar un ejemplo de prueba dado a la siguiente pregunta: ¿Cómo actualizar un gráfico en matplotlib?

Este ejemplo actualiza la ttwig para animar una señal sinusoidal en movimiento. En lugar de reenviar, actualiza los datos del objeto de trazado. Funciona en la línea de comandos, pero la figura no se muestra cuando se ejecuta en PyCharm. Al agregar plt.show(block=True) al final de la secuencia de comandos, aparece la figura, pero esta vez no se actualiza.

¿Algunas ideas?

La actualización en la pregunta vinculada se basa en el supuesto de que el gráfico está incrustado en una aplicación tkinter, que no es el caso aquí.

Para una plot de actualización como una ventana independiente, debe haber activado el modo interactivo, es decir, plt.ion() . En PyCharm esto debería estar activado por defecto.

Para mostrar la figura en modo interactivo, necesita dibujarla, plt.draw() . Para que se mantenga receptivo, debe agregar una pausa, plt.pause(0.02) . Si desea mantenerlo abierto después de que el bucle haya finalizado, deberá desactivar el modo interactivo y mostrar la figura.

 import matplotlib.pyplot as plt import numpy as np x = np.linspace(0, 6*np.pi, 100) y = np.sin(x) plt.ion() fig = plt.figure() ax = fig.add_subplot(111) line1, = ax.plot(x, y, 'r-') plt.draw() for phase in np.linspace(0, 10*np.pi, 500): line1.set_ydata(np.sin(x + phase)) plt.draw() plt.pause(0.02) plt.ioff() plt.show() 

Como lo señaló ImportanceOfBeingErnest en una pregunta aparte , en algunos sistemas, es vital agregar estas dos líneas al principio del código del ejemplo del OP:

 import matplotlib matplotlib.use("TkAgg") 

Esto puede hacer que las llamadas a plt.ion y plt.ioff innecesarias; El código ahora funciona sin ellos en mi sistema.