python - 如何仅使用animation.FuncAnimation绘制当前帧?
问题描述
生成数据:
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,
它没有显示任何东西。
解决方案
删除我评论过的 quiver 的选项可能如下所示:
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()
推荐阅读
- sql - 如何使用 SQL MERGE 删除重复项并更新数据?
- php - 根据内容处理TXT文件
- oracle - 在Oracle中编写基于FIFO调整表中值的逻辑
- javascript - 在javascript中勾选工作日的复选框
- python - 为什么 conda 命令在 Windows Powershell 但在 Anaconda PowerShell Prompt 中不显示任何输出?
- ios - 为什么我们在 Apple 的“使用场景深度可视化点云”示例代码中需要“rotateToARCamera”?
- arrays - 在插入数组时,做 n++ 会增加数组的大小吗?它实际上是否为数组分配了额外的传染性内存位置?
- azure-devops-extensions - Azure DevOps 扩展占位符
- image-processing - 你如何在 kaggle 中使用 GPU 和 TPU?
- python - Anaconda 版本更新不起作用(Windows)