Environnement: Python 2.7, matplotlib 1.3, notebook IPython 1.1, linux, chrome. Le code est dans une seule cellule d'entrée, en utilisant--pylab=inline
Je souhaite utiliser le notebook IPython et les pandas pour consommer un flux et mettre à jour dynamiquement un tracé toutes les 5 secondes.
Lorsque j'utilise simplement une instruction d'impression pour imprimer les données au format texte, cela fonctionne parfaitement: la cellule de sortie continue simplement d'imprimer des données et d'ajouter de nouvelles lignes. Mais lorsque j'essaie de tracer les données (puis de les mettre à jour dans une boucle), le tracé n'apparaît jamais dans la cellule de sortie. Mais si je supprime la boucle, tracez-la une fois. Ça fonctionne bien.
Ensuite, j'ai fait un test simple:
i = pd.date_range('2013-1-1',periods=100,freq='s')
while True:
plot(pd.Series(data=np.random.randn(100), index=i))
#pd.Series(data=np.random.randn(100), index=i).plot() also tried this one
time.sleep(5)
La sortie n'affichera rien tant que j'interromprai manuellement le processus (ctrl + m + i). Et après l'avoir interrompu, l'intrigue s'affiche correctement sous la forme de plusieurs lignes superposées. Mais ce que je veux vraiment, c'est un tracé qui s'affiche et qui est mis à jour toutes les 5 secondes (ou chaque fois que la plot()
fonction est appelée, tout comme les résultats de l'instruction d'impression que j'ai mentionnés ci-dessus, qui fonctionne bien). Ne montrer que le graphique final une fois la cellule terminée n'est PAS ce que je veux.
J'ai même essayé d'ajouter explicitement la fonction draw () après chacun plot()
, etc. Aucun d'eux ne fonctionne. Je me demande comment mettre à jour dynamiquement un tracé par une boucle for / while dans une cellule du notebook IPython.