Python 如何使用animation.FuncAnimation仅打印当前帧?
生成数据:Python 如何使用animation.FuncAnimation仅打印当前帧?,python,python-3.x,matplotlib,jupyter-notebook,Python,Python 3.x,Matplotlib,Jupyter Notebook,生成数据: import glob import pandas as pd import numpy as np coords = dict() for j in range(10): x=np.random.uniform(0.0, 5.0,2); y=np.random.uniform(0.0, 5.0,2); vx=np.random.uniform(-1,1,2); vy=np.random.uniform(-1,1,2); coords[j]=
import glob
import pandas as pd
import numpy as np
coords = dict()
for j in range(10):
x=np.random.uniform(0.0, 5.0,2);
y=np.random.uniform(0.0, 5.0,2);
vx=np.random.uniform(-1,1,2);
vy=np.random.uniform(-1,1,2);
coords[j]= {'x': x, 'y':y, 'vx':vx, 'vy':vy}
绘图部分:
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation
from matplotlib import animation, rc
from IPython.display import HTML
%matplotlib inline
fig, ax = plt.subplots(1,1)
ax.set_xlim(-5, 5)
ax.set_ylim(-5, 5)
def update_quiver(frameIdx):
global coords
frame = coords[frameIdx]
X = frame['x']
Y = frame['y']
U = frame['vx']
V = frame['vy']
Q = ax.quiver(X, Y, U, V, pivot='mid', color='k', units='inches')
Q.set_UVC(U,V)
return Q,
然后绘制:
rc('animation', html='jshtml')
anim = animation.FuncAnimation(fig, update_quiver, fargs=(),
interval=50, blit=False, frames=max(coords.keys()))
anim
我怎样才能只看到粒子的当前位置而不是整个轨迹
当我尝试时:
def update_quiver(frameIdx):
global coords
fig.clf()
ax.set_xlim(-5, 5)
ax.set_ylim(-5, 5)
frame = coords[frameIdx]
X = frame['x']
Y = frame['y']
U = frame['vx']
V = frame['vy']
Q = ax.quiver(X, Y, U, V, pivot='mid', color='k', units='inches')
Q.set_UVC(U,V)
return Q,
它没有显示任何东西 您可以尝试清除
update\u quiver
中的图形:
fig.clf()
编辑:此代码适用于我的计算机:
def update_quiver(frameIdx):
frame = coords[frameIdx]
plt.cla()
ax.set_xlim(-1, 7)
ax.set_ylim(-1, 7)
X = frame['x']
Y = frame['y']
U = frame['vx']
V = frame['vy']
Q = ax.quiver(X, Y, U, V, pivot='mid', color='k', units='inches')
Q.set_UVC(U,V)
return Q,
anim = animation.FuncAnimation(fig, update_quiver, fargs=(),interval=500, blit=True,frames=np.arange(len(coords)))
fig.tight_layout()
plt.show()
您可以尝试清除
update\u quiver
中的图形:
fig.clf()
编辑:此代码适用于我的计算机:
def update_quiver(frameIdx):
frame = coords[frameIdx]
plt.cla()
ax.set_xlim(-1, 7)
ax.set_ylim(-1, 7)
X = frame['x']
Y = frame['y']
U = frame['vx']
V = frame['vy']
Q = ax.quiver(X, Y, U, V, pivot='mid', color='k', units='inches')
Q.set_UVC(U,V)
return Q,
anim = animation.FuncAnimation(fig, update_quiver, fargs=(),interval=500, blit=True,frames=np.arange(len(coords)))
fig.tight_layout()
plt.show()
移除我评论的箭袋的选项可能如下所示:
import numpy as np; np.random.seed(1)
coords = dict()
for j in range(10):
x=np.random.uniform(0.0, 5.0,2);
y=np.random.uniform(0.0, 5.0,2);
vx=np.random.uniform(-1,1,2);
vy=np.random.uniform(-1,1,2);
coords[j]= {'x': x, 'y':y, 'vx':vx, 'vy':vy}
import numpy as np
from matplotlib import pyplot as plt, animation
fig, ax = plt.subplots(1,1)
ax.set_xlim(-1, 6)
ax.set_ylim(-1, 6)
Q = ax.quiver(1,1,1,1, alpha=0)
def update_quiver(frameIdx):
global coords, Q
frame = coords[frameIdx]
X = frame['x']
Y = frame['y']
U = frame['vx']
V = frame['vy']
Q.remove()
Q = ax.quiver(X, Y, U, V, pivot='mid', color='k', units='inches')
return Q,
anim = animation.FuncAnimation(fig, update_quiver, fargs=(),
interval=500, blit=False, frames=max(coords.keys()))
plt.show()
移除我评论的箭袋的选项可能如下所示:
import numpy as np; np.random.seed(1)
coords = dict()
for j in range(10):
x=np.random.uniform(0.0, 5.0,2);
y=np.random.uniform(0.0, 5.0,2);
vx=np.random.uniform(-1,1,2);
vy=np.random.uniform(-1,1,2);
coords[j]= {'x': x, 'y':y, 'vx':vx, 'vy':vy}
import numpy as np
from matplotlib import pyplot as plt, animation
fig, ax = plt.subplots(1,1)
ax.set_xlim(-1, 6)
ax.set_ylim(-1, 6)
Q = ax.quiver(1,1,1,1, alpha=0)
def update_quiver(frameIdx):
global coords, Q
frame = coords[frameIdx]
X = frame['x']
Y = frame['y']
U = frame['vx']
V = frame['vy']
Q.remove()
Q = ax.quiver(X, Y, U, V, pivot='mid', color='k', units='inches')
return Q,
anim = animation.FuncAnimation(fig, update_quiver, fargs=(),
interval=500, blit=False, frames=max(coords.keys()))
plt.show()
这正是我想做的,但没有成功。整个动画最终变成了一个白色屏幕。我试着让它在
update\u quiver
中使用plt.cla()
,正如贝因杰内斯提到的那样,但是,在再次清除轴后,您必须设置ylim和xlim。它没有将其添加到我的问题中。我已在我的计算机上发布了正确工作的代码,并在每个帧中绘制了两个箭头。这是我实际尝试做的,但它不起作用。整个动画最终变成了一个白色屏幕。我试着让它在update\u quiver
中使用plt.cla()
,正如贝因杰内斯提到的那样,但是,在再次清除轴后,您必须设置ylim和xlim。它不会将其添加到我的问题中。我已发布了在我的计算机上正常工作的代码,并在每个帧中绘制了两个箭头。