Вывести несколько графиков в Python для анимации - PullRequest
0 голосов
/ 01 марта 2020

Я пытаюсь анимировать недисперсионный волновой пакет. Моя идея состоит в том, чтобы вывести волновую функцию в различные моменты времени, а затем добавить отдельные фотографии для создания анимации. Мой Python код вида работы, но он повторяет предыдущие графики на всех следующих графиках, и я не знаю, как это исправить.

import matplotlib.pyplot as plt
import numpy as np

k = np.linspace(1,100,1000)
#x = np.linspace(-n<p.pi,np.pi,100)
x = np.linspace(0,70,71)
fac = np.linspace(0,1,1000)
result = []
n = 800
t = np.linspace(-150,150,n)
vp = -1
E0 = 1
w0 = 1
T = 10
def wave(k,x):
    return abs(np.sin(x-k))

def packet(E0,t,w0,T,x):
    return E0*np.cos(w0*(t+vp*x))*np.exp(-(t+vp*x)**2/T**2)

j = len(fac)-1
    #while j >= 0:
    #for i in range(len(k)):
    #   result.append(wave(k[i],x))
            #j -= 1

b = np.array(result)
c = np.sum(b,axis = 0)
    #plt.plot(x,c)
    #plt.show()

counter = 0
i=0
while counter <= 71:
    plt.plot(t,packet(E0,t,w0,T,i),label = 't = %d' %(i))
    plt.savefig("time%d.pdf" %i)
    i += 1
    counter += 1

1 Ответ

0 голосов
/ 01 марта 2020

Вы можете переписать свой цикл следующим образом:

while counter <= 71:
    plt.cla() # clean current axis
    plt.plot(t, packet(E0,t,w0,T,i),label = 't = %d' %(i))
    plt.ylim([-1.1, 1.1]) # establish limits for better visualization
    plt.savefig("time%d.jpg" %i)
    i += 1
    counter += 1

, также вы можете создать анимацию в соответствии с этим примером

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...