He estado jugando con Numpy y matplotlib en los últimos días. Tengo problemas para intentar que matplotlib plot sea una función sin bloquear la ejecución. Sé que ya hay muchos hilos aquí en SO que hacen preguntas similares, y he buscado mucho en Google pero no he logrado que esto funcione.
He intentado usar show (block = False) como sugieren algunas personas, pero todo lo que obtengo es una ventana congelada. Si simplemente llamo a show (), el resultado se traza correctamente pero la ejecución se bloquea hasta que se cierra la ventana. De otros hilos que he leído, sospecho que si show (block = False) funciona o no depende del backend. ¿Es esto correcto? Mi back end es Qt4Agg. ¿Podrías echar un vistazo a mi código y decirme si ves algo mal? Aquí está mi código. Gracias por cualquier ayuda.
from math import *
from matplotlib import pyplot as plt
print plt.get_backend()
def main():
x = range(-50, 51, 1)
for pow in range(1,5): # plot x^1, x^2, ..., x^4
y = [Xi**pow for Xi in x]
print y
plt.plot(x, y)
plt.draw()
#plt.show() #this plots correctly, but blocks execution.
plt.show(block=False) #this creates an empty frozen window.
_ = raw_input("Press [enter] to continue.")
if __name__ == '__main__':
main()
PD. Olvidé decir que me gustaría actualizar la ventana existente cada vez que trazo algo, en lugar de crear una nueva.
matplotlib
.
plt.ion()
antesplt.show()
? Entonces no debe ser bloqueante ya que cada trama se genera en un hilo secundario.