animation de l'intrigue dans les matplotlib avec double boucle for

Je voudrais créer une animation avec matplotlib en python. Comme l'animation est fonction de deux paramètres (temps, nombre de corps), j'ai eu une idée pour utiliser les 2 boucles for. Le code est ci-dessous:

import time
import matplotlib as mpl
from matplotlib import pyplot as plt
from matplotlib import pylab as plb

#   set up figure for plotting:
fig = plt.figure()
ax = fig.add_subplot(111)

#    plot limits
ax.set_xlim(-(max(q0) + bodies[-1].L), +(max(q0) + bodies[-1].L))
ax.set_ylim(-(max(q0) + bodies[-1].L), +(max(q0) + bodies[-1].L))

#    colors
colors = ['b', 'g', 'c']


for i_t in range(0, np.shape(t)[1]):    #t is an one column matrix
    for i in range(0, N):
        ax.plot(x_matrix[i_t, i], y_matrix[i_t, i], 's', color=colors[i])
    plt.draw()
plt.show()

Le problème est que le code me génère une parcelle, mais avec tous les animés de points. Je voudrais avoir de l'animation ploted pour une valeur de temps (compteur i_t) et de tous les corps (compteur i) dans une fenêtre comme un film de sorte que le graphique précédent est effacé lors de la prochaine étape.

J'ai changé le code que vous avez suggéré de:

for i_t in range(0, np.shape(t)[1]):
    for i in range(0, N):
        ax.clear()
        ax.plot(x_matrix[i_t, i], y_matrix[i_t, i], 's', color=colors[i])
        plt.pause(0.001)
plt.draw()

Mais ensuite, j'obtiens une erreur:

C:\Python27\lib\site-packages\matplotlib\backend_bases.py:2292:
MatplotlibDeprecationWarning: à l'Aide d'événement par défaut de la boucle jusqu'à ce que la fonction
spécifique pour ce GUI est mise en œuvre des avertissements.avertir(str,
mplDeprecation)

Qui n'est pas si effrayant, mais lors de l'exécution du code, les points qui devraient être représentés ensemble (contre j') sont tracées en dehors de sorte qu'il ressemble blinkig points (si vous voyez ce que je veux dire).

Toutes les suggestions. Je pense que je suis proche de la solution, mais encore besoin de la finishig tactile pour le code de travail. J'espère que cela peut être fait de la façon dont je l'imaginais donc je n'aurais pas à résoudre le problème avec une approche différente.

  • vous devez utiliser le show de commande pour chaque i_t, je suppose. Gardez à l'esprit que vous tracer tous les trucs dans exactement une (!) graphique avec votre code. Peut-être que vous devriez vérifier le matplotlib livre de cuisine pour les animations: scipy.org/Cookbook/Matplotlib/Animations ou si vous voulez un film, (probablement que oui), vérifiez ceci: debtechandstuff.blogspot.de/2009/10/... de manière générale, vous avez pour tracer chaque image sur son propre, puis faire de l'animation en dehors de ça. Une animation .gif est assez facile à faire.
  • Vous pouvez ignorer cet avertissement.
  • elle fonctionnera mieux si vous venez de remplacer les données avec set_data, plutôt que de souffler l'ensemble des axes à l'écart de toutes les images.
InformationsquelleAutor lskrinjar | 2013-06-03