Matplotlib使用不同的标记动画对象

时间:2017-08-07 13:54:35

标签: python animation matplotlib

我需要在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,所以如果我使用lineline2,我需要一种方法来合并它们。

类似的东西:

plot(x, y, 'o')                  # position
plot([x0, x1], [y0, y1], '-')  # speed

由于

1 个答案:

答案 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