我有一些問題FuncAnimation功能MatPlotLib。我無法將其配置爲我的代碼...我希望有人能幫助我!如何配置FuncAnimation(從matplotlib.animation動態繪圖)到numpy數組?
這是一個擴散方程,我需要爲它的每一步繪製它。在每一步中,計算的結果都是一個numpy數組。我設法用pyplot.interactive(True)以動態方式繪製它,但它非常滯後。我讀了FuncAnimation可以處理這個問題,但我沒有設法讓它在列表或數組中處理結果。
這裏是一個經典慢陰謀代碼:
它產生向量(ü)至極都計算
import numpy as np
import scipy
from scipy.linalg import solve_banded
from matplotlib import pyplot as plt
import matplotlib.animation as animation
def DrawRecord(U):
plt.interactive(True)
plt.figure(1)
for i in range(0,len(U)):
plt.clf()
plt.plot(U[i])
plt.ylim([0,1])
plt.draw()
J=350.0
dt=0.01
T=3.0
t=np.arange(dt,T,dt)
dx=1.0/J
D=0.005
c=0.5
r=0.1
mu=c*dt/(2.0*dx)
lambd=D*dt/(dx**2.0)
K_x=50.0*np.ones(J-1)
alpha_t=0.5*np.ones(len(t))
#initial conditions
u=np.zeros(J)
u[J/5*1:J/5*2]=1
U=u
espace=np.linspace(0,1,J)
#Matrix
A=np.diag(-lambd*np.ones(J-2),1)+np.diag((1+2*lambd)*np.ones(J-1),0)+np.diag(-lambd*np.ones(J-2),-1)
AA=scipy.linalg.inv(A)
for i in t:
u[1:J]=scipy.dot(AA,u[1:J]+(r-alpha_t[i/dt])*dt*(u[1:J]-u[1:J]/K_x))
u[0]=0
u[J-1]=0
U=np.vstack([U,u])
DrawRecord(U)
這裏後ploted的載體是我做轉的嘗試FuncAnimation與前一代碼(大失敗):
NB:對於每個計算出的結果的ü內容陣列步驟
global U
fig = plt.figure()
window = fig.add_subplot(111)
line, = window.plot(list(U[1,:]))
def init():
line=list(U[1,:])
return line
def animate(i):
line.set_ydata(list(U[i,:]))
return line
anim = animation.FuncAnimation(fig, animate, init_func=init,
frames=200, interval=20, blit=True)
plt.show()
這會產生很多錯誤...也許有人可以爲之前的代碼進行設置!
我希望我很清楚(對不起我的英文),並感謝您的幫助。
你能告訴我們你收到了什麼錯誤嗎? – tacaswell