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?
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 .
Après avoir modifié les valeurs, n'oubliez pas de redémarrer IDE (Spyder, PyCharm, etc.)