2015-08-27 27 views
0

是否有任何方法繪製功能內的繪圖,然後在功能完成執行之前在繪圖上顯示更改?Matplotlib繪製立即在功能內繪製

例如,在這個函數中,我想獲得文本的窗口範圍,但函數給出錯誤Cannot get window extent w/o renderer ,因爲在調用s.get_window_extent()時文本沒有繪製在圖上。

import matplotlib.pyplot as plt 
import time 
plt.ion() 
myfig, myax = plt.subplots() 


def plot_now(): 
    s = myax.annotate("foo", [0.5, 0.5]) 
    myfig.canvas.draw_idle() 
    s.get_window_extent() 

plot_now() 

我使用IPython的,蟒蛇2.7.6,matplotlib 1.4.3和Qt4Agg後端

回答

1

添加plt.draw()它去睡覺前。

+0

不起作用 - 該圖不會更新,直到該功能運行完畢 –

+0

它在2.7.6 shell和matplotlib版本1.3.1上運行我的末端 – DaveQ

+0

那麼,那是相當神祕的。我想知道它爲什麼適用於您,但不適合我,您運行的MPL版本是什麼? –

1

嘗試plt.pause(60)而不是time.sleep(60)。有人回答說this question表示time.sleep不適用於Qt4Agg。

+0

我實際上只是使用time.sleep()進行演示,實際上並不是真正的代碼。我已更新我的示例以更接近我的實際問題 –