【发布时间】:2013-10-20 04:15:07
【问题描述】:
我正在尝试为 Python 中的风等矢量设置动画。我尝试在 pylab 中使用 quiver 函数,并与 matplotlib 中的 matplotlib.animation 结合使用。但是,结果显示'QuiverKey' object is not subscriptable。我认为这是因为我对这两个功能不完全了解,或者这两个功能不匹配。下面是我的代码,它实际上是matplotlib中的quiver和animation函数的组合。
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()
【问题讨论】:
-
好吧,
data是一个QuiverKey对象 - 它代表一个箭袋图的键,而不是一个可以索引的值数组。我真的不明白你的目标是什么 - 你说你想绘制动画箭袋,但你的动画功能看起来只是为了给一条线添加点。你能描述一下你想要达到的目标吗? -
嗨 ali_m,非常感谢您的评论和帮助。我的目标是创建一个动画,它会颤动到箭头的方向。可能是我对这个函数结构的理解太低了。你能帮我理解我是如何让每个箭袋向每个箭头(矢量)方向移动的吗?
-
我还是不太明白你的意思。你想改变箭头的长度和角度,还是想移动它们的枢轴点?据我所知,一旦创建了箭袋图,就无法更改其 x,y 坐标,但您可以使用
Q.set_UVC()更新箭头向量。 -
谢谢 ali_m。 Q.set_UVC() 可能对我的目标有所帮助。我真的很感激。我会试试这个功能。
标签: python animation matplotlib