为了回答这个问题,Plotting animated quivers in Python,我遵循了一些建议的代码,但是我发现我有一个问题没有得到解决。考虑以下代码:
from matplotlib import pyplot as plt
import numpy as np
import matplotlib.animation as animation
def ufield(x,y,t):
return np.cos(x+y)*np.sin(t)
def vfield(x,y,t):
return np.sin(x+y)*np.cos(t)
x = np.linspace(0,10, num=11)
y = np.linspace(0,10, num=11)
X,Y = np.meshgrid(x,y)
t = np.linspace(0,1)
def update_quiver(j, ax, fig):
u = ufield(X,Y,t[j])
v = vfield(X,Y,t[j])
Q.set_UVC(u, v)
ax.set_title('$t$ = '+ str(t[j]))
return Q,
fig =plt.figure()
ax = fig.gca()
u = ufield(X,Y,t[0])
v = vfield(X,Y,t[0])
Q = ax.quiver(X, Y, u, v)
ax.set_title('$t$ = '+ str(t[0]))
ax.set_xlabel('$x$')
ax.set_ylabel('$y$')
ani = animation.FuncAnimation(fig, update_quiver,
frames = range(0,t.size),
interval=1,fargs=(ax, fig))
plt.show()
这段代码运行良好,没有问题。但是,如果我想使用init_func,而且我想用我的动画做更多的事情,我尝试了:
^{pr2}$从脚本主体中删除这些行
u = ufield(X,Y,t[0])
v = vfield(X,Y,t[0])
Q = ax.quiver(X, Y, u, v)
并按如下方式更新动画线:
ani = animation.FuncAnimation(fig, update_quiver,
frames = range(0,t.size),
init_func=init_quiver,
interval=1,fargs=(ax, fig))
plt.show()
但是当我运行这个时,我看到了第一帧,没有任何更新。在
当我运行你的脚本时,我看到你描述的行为,在我运行它的终端中,我得到一个错误,它的回溯结尾是:
您可以通过添加行来纠正此问题
作为
init_quiver
函数的第一行。在完整的代码现在是:
^{pr2}$相关问题 更多 >
编程相关推荐