J'essaie de mettre à jour une figure interactive matplotlib tout en étant dans une boucle utilisant JupyterLab. Je peux le faire si je crée la figure dans une cellule différente de la boucle, mais je préférerais créer la figure et exécuter la boucle dans la même cellule.
Exemple de code simple :
import matplotlib.pyplot as plt
import time
%matplotlib widget
fig = plt.figure()
for i in range(5):
x = list(range(i+2))
xx = [x**2 for x in x]
plt.clf()
plt.plot(x, xx)
fig.canvas.draw()
time.sleep(1)
Si fig = plt.figure()
se trouve dans la même cellule que la boucle, la figure n'est pas mise à jour tant que la boucle n'est pas terminée :
Si je crée la figure dans une autre cellule, j'obtiens la mise à jour dynamique, mais j'aimerais pouvoir créer la figure dans la même cellule si possible afin que la sortie soit en dessous de la boucle :
J'ai essayé plusieurs réponses dans d'autres questions ( aquí , aquí et aquí ), mais elles ne semblent pas fonctionner avec les figures interactives de JupyterLab. J'utilise l'option jupyter/scipy-notebook docker image comme mon environnement, donc je crois que tout est configuré correctement.
Existe-t-il un moyen d'obtenir la mise à jour dynamique dans la même cellule que celle où la figure est créée ?