2013-05-12 19 views
0

我想在matplotlib的動畫中顯示已用時間。我創建了一個文本實例,但是當我嘗試更新它時(基於幀編號),沒有任何更改。下面是部分代碼:在matplotlib中顯示已用時間(幀數)

fig = plt.figure() 
ax = plt.axes(xlim =(-4E8,4E8), ylim= (-4E8,4E8)) 
time_text = ax.text(0.05, 0.95,'',horizontalalignment='left',verticalalignment='top', transform=ax.transAxes) 

def init(): 
    for line, pt in zip(lines, pts): 
     line.set_data([], []) 

     pt.set_data([], []) 
     time_text.set_text('hello') 
    return lines + pts 
    return time_text 

def animate(i): 
    i = (10 * i) % data.shape[1] 
    #update lines and points here 
    for line, pt, dt in zip(lines,pts, data): 
     x, y, z = dt[:i].T 
     line.set_data(x, y) 

     pt.set_data(x[-1:], y[-1:]) 

     time_text.set_text('time = %.1d' % i) #<<<<<Here. This doesn't work 
    return lines + pts 
    return time_text 

anim = animation.FuncAnimation(fig, animate, init_func=init, 
          frames=700, interval=1, blit=True) 
plt.show() 

的時間取決於幀數,所以我嘗試這樣做:

time_text.set_text('time = %.1d' % i) 

,但它沒有更新(保持「你好」)。

任何想法?我究竟做錯了什麼?

回答

1

更改此:

return lines + pts 
return time_text 

這樣:

return lines + pts + [time_txt,] 

第二回是從來沒有擊中,所以它不知道更新藝術家。

+0

@tcaswellare:你確定它永遠不會被打?我確實看到了「你好」。如果我改變它到你說的我得到'TypeError:只能連接列表(而不是「元組」)列表' – user1830663 2013-05-12 22:30:33

+0

我錯過了什麼類型的'線路'和'pts'是。錯誤消息告訴你_exactly_什麼是錯的。我相當確信第二次迴歸沒有受到打擊。 – tacaswell 2013-05-12 22:43:51

+0

謝謝。這樣可行。我沒有意識到你只是把文本對象放在一個列表(元組)中。 – user1830663 2013-05-12 22:56:06