2016-03-07 17 views
8

Sono nuovo sia per python che per stackoverflow e sto esaminando alcuni esempi su matplotlib. Ho cercato la soluzione a questo problema senza fortuna, anche se sono stato in grado di individuare uno previously unanswered question nello stackoverflow con lo stesso problema.Animazione da matplotlib che non funziona nello spyder

Fondamentalmente, ho copiato il codice disponibile dagli esempi su matplotlib; per esempio:

import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.animation as animation 
def data_gen(t=0): 
    cnt = 0 
    while cnt < 1000: 
     cnt += 1 
     t += 0.1 
     yield t, np.sin(2*np.pi*t) * np.exp(-t/10.) 
def init(): 
    ax.set_ylim(-1.1, 1.1) 
    ax.set_xlim(0, 10) 
    del xdata[:] 
    del ydata[:] 
    line.set_data(xdata, ydata) 
    return line, 

fig, ax = plt.subplots() 
line, = ax.plot([], [], lw=2) 
ax.grid() 
xdata, ydata = [], [] 


def run(data): 
    # update the data 
    t, y = data 
    xdata.append(t) 
    ydata.append(y) 
    xmin, xmax = ax.get_xlim() 

    if t >= xmax: 
     ax.set_xlim(xmin, 2*xmax) 
     ax.figure.canvas.draw() 
    line.set_data(xdata, ydata) 

    return line, 

ani = animation.FuncAnimation(fig, run, data_gen, blit=False, interval=10, 
          repeat=False, init_func=init) 
plt.show() 

Ho eseguito vari esempi di animazione sia in Anaconda 2 (Python 2.7) & 3 (python 3.5), ed entrambi mi danno una trama vuoto senza animazione. Tuttavia, ogni animazione funziona perfettamente in Enthought Canopy.

C'è qualcosa di semplice che mi manca quando si usa Spyder?

risposta

9

È necessario modificare il back-end per eseguire un'animazione nella console IPython. È possibile farlo eseguendo il comando %matplotlib qt prima dell'animazione.

Se non si desidera utilizzare questo comando ogni volta, Si può andare a: Tools > Preferences > IPython Console > Graphics > Backend e modificarlo "Inline"-"Automatic".

Aggiornamento: febbraio 2018, questo è ora in python> Preferenze Nella finestra selezionare la console IPython nel pannello LH della finestra. Seleziona la scheda Grafica e il backend è lì.

Per ulteriori dettagli, leggere this.

+1

Perfetto, grazie! Voterò non appena avrò abbastanza rappresentanti. – Medalgardr

+0

'% matplotlib qt5' ha funzionato per me. – cjorssen