2017-08-07 35 views
0

我需要做在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更新粒子的位置(i): line.set_data(x,y) return line,

然而在這些例子中,它們要麼使用線條(例如:擺錘的例子),要麼使用點(一個盒子的例子中的粒子),但不是兩者。

如何首先將粒子繪製爲點,然後將速度向量添加爲線?

動畫函數必須返回line所以如果我使用lineline2我需要一種方法來合併它們。

喜歡的東西:

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

感謝

回答

0

您可以在兩者之間(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 
+0

但是,動畫函數應該返回一個單一的對象。我該如何合併? –

+0

那麼,你必須返回兩個,如更新的答案中所示。 – ImportanceOfBeingErnest

+0

它的工作原理,謝謝 –

相關問題