web-dev-qa-db-fra.com

L'animation de matplotlib ne fonctionne pas dans spyder

Je connais à la fois python et stackoverflow, et je vais en donner des exemples à matplotlib. J'ai cherché la solution à ce problème sans succès, même si j'ai pu localiser une question sans réponse auparavant in stackoverflow avec le même problème. 

Fondamentalement, j'ai copié le code disponible dans les exemples de matplotlib ; par exemple: 

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()

J'ai exécuté divers exemples d'animation dans Anaconda 2 (Python 2.7) et 3 (Python 3.5), et les deux me donnent un tracé vierge sans animation. Cependant, chaque animation fonctionne parfaitement dans Enthought Canopy. 

Y a-t-il quelque chose de simple qui me manque lorsque j'utilise spyder?

10
Medalgardr

Vous devez modifier le backend pour exécuter une animation dans la console IPython. Vous pouvez le faire en exécutant la commande %matplotlib qt avant l'animation. 

Si vous ne voulez pas utiliser cette commande à chaque fois, vous pouvez aller à: Tools > Preferences > IPython Console > Graphics > Backend Et le changer de "Inline" à "Automatic"

Mise à jour: février 2018, cela se trouve maintenant dans python> Préférences. Dans la fenêtre, sélectionnez Console IPython dans le volet LH de la fenêtre. Sélectionnez l'onglet Graphics et le backend est là.

Pour plus de détails, veuillez lire this .

12
Tony Babarino

Après avoir modifié les valeurs, n'oubliez pas de redémarrer IDE (Spyder, PyCharm, etc.)

2
Darshak Mehta