2012-08-06 308 views
1

我有一個小應用程序,允許我使用tKinter縮放窗口小部件更改輸入值,並查看圖形如何對輸入中的不同更改作出反應。每當我移動這個尺度時,它就會發生一個事件,它會重新計算一個列表和replots。這有點慢。重新繪製之前清除圖matplotlib

現在,我正在重新繪製整個東西,但它將一個軸重疊在另一個之上,幾百分鐘後使用。

deltaPlot = Figure(figsize=(4,3.5), dpi=75, frameon=False) 
c = deltaPlot.add_subplot(111) 
c.set_title('Delta') 
deltaDataPlot = FigureCanvasTkAgg(deltaPlot, master=master) 
deltaDataPlot.get_tk_widget().grid(row=0,rowspan=2) 

和主循環運行

c.cla() 
c.plot(timeSpread,tdeltas,'g-') 
deltaDataPlot.show() 

它清除初始的情節,但就像我說的軸堆疊(因爲它每次重繪一個,對應於輕微改變的數據點)。任何人都知道一個修復

+0

您可以添加工作代碼示例嗎?例如什麼是「主」? – jmetz 2012-08-06 16:43:37

回答

1

爲了提高速度有幾件事情你可以做:

要麼運行remove方法對情節生產線:

# inside the loop 
line, = c.plot(timeSpread,tdeltas,'g-') 
deltaDataPlot.show() 
... 
line.remove() 

或者重新使用線,適當更新其座標:

# outside the loop 
line, = c.plot(timeSpread,tdeltas,'g-') 

# inside the loop 
deltaDataPlot.show() 
line.set_data(timeSpread,tdeltas) 

Line2d的文檔可以找到here

您可能還想要閱讀cookbook article on animation

HTH