gpt4 book ai didi

python - 在 Python 中绘制动画箭袋

转载 作者:太空狗 更新时间:2023-10-29 17:58:49 24 4
gpt4 key购买 nike

我正在尝试在 Python 中为矢量(例如风)制作动画。我尝试在 pylab 中使用 quiver 函数,并结合 matplotlib 中的 matplotlib.animation。但是,结果显示 'QuiverKey' object is not subscriptable。我认为这是因为我对这两个功能没有完全了解,或者只是这两个功能不匹配。下面是我的代码,它实际上是 matplotlib 中的箭袋和动画功能的结合。

def update_line(num, data, line):
line.set_data(data[...,:num])
return line,

X,Y = np.meshgrid(np.arange(0,2*np.pi,.2),np.arange(0,2*np.pi,.2) )
U = np.cos(X)
V = np.sin(Y)

fig1 = plt.figure()
Q = quiver( X[::3, ::3], Y[::3, ::3], U[::3, ::3], V[::3, ::3],
pivot='mid', color='r', units='inches' )
data = quiverkey(Q, 0.5, 0.03, 1, r'$1 \frac{m}{s}$', fontproperties={'weight': 'bold'})
plt.axis([-1, 7, -1, 7])
title('scales with plot width, not view')
l, = plt.plot([], [], 'r-')
plt.xlabel('x')
plt.ylabel('y')
plt.title('test')
line_ani = animation.FuncAnimation(fig1, update_line, 25, fargs=(data, l),
interval=50, blit=True)
plt.show()

最佳答案

这是一个让您入门的示例:

import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation

X, Y = np.mgrid[:2*np.pi:10j,:2*np.pi:5j]
U = np.cos(X)
V = np.sin(Y)

fig, ax = plt.subplots(1,1)
Q = ax.quiver(X, Y, U, V, pivot='mid', color='r', units='inches')

ax.set_xlim(-1, 7)
ax.set_ylim(-1, 7)

def update_quiver(num, Q, X, Y):
"""updates the horizontal and vertical vector components by a
fixed increment on each frame
"""

U = np.cos(X + num*0.1)
V = np.sin(Y + num*0.1)

Q.set_UVC(U,V)

return Q,

# you need to set blit=False, or the first set of arrows never gets
# cleared on subsequent frames
anim = animation.FuncAnimation(fig, update_quiver, fargs=(Q, X, Y),
interval=50, blit=False)
fig.tight_layout()
plt.show()

enter image description here

关于python - 在 Python 中绘制动画箭袋,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19329039/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com