2012-08-06 306 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