我需要在matplotlib中做一个动画,我想绘制一个移动的粒子(作为一个点)和一条线(对应于它的速度的大小和方向)
我看过这个网站,有不同的动画示例。
https://jakevdp.github.io/blog/2012/08/18/matplotlib-animation-tutorial/
基本上他们在示例中所做的是将line
初始化为带有某些标记的图:
line, = ax.plot([], [], 'o') # for points
line2, = ax.plot([], [], '-') # for lines
在animate
函数中,他们只使用set_data
来更新下一帧的粒子位置
def animate(i):
line.set_data(x,y)
返回行,
然而,在示例中,他们要么使用线条(例如:钟摆示例)或点(框中的粒子),而不是两者。
如何首先将粒子绘制为点,然后将速度矢量添加为线?
animate函数必须返回line
,所以如果我使用line
和line2
,我需要一种方法来合并它们。
类似的东西:
plot(x, y, 'o') # position
plot([x0, x1], [y0, y1], '-') # speed
由于
答案 0 :(得分:1)
你可以定义两条"线",一条由标记点组成,但两条线之间没有线(ls=""
),一条线只有一条线但没有标记(marker=""
)
points, = ax.plot([1,2], [3,4], marker='o', ls="" ) # for points
line, = ax.plot([2,1], [4,3], marker="" , ls="-") # for lines
然后,animate函数将返回"行":
def animate(i):
# x = ...; y = ...
line.set_data(x, y)
# x2 = ...; y2 = ...
points.set_data(x2, y2)
return points, line