在重新绘制matplotlib之前清除图形

时间:2012-08-06 14:57:43

标签: python matplotlib tkinter user-interaction

我有一个小应用程序允许我使用tKinter比例小部件更改输入值,并查看图形如何对输入中的不同更改做出反应。每次移动比例时,都会绑定一个事件来重新计算列表和重新编号。这有点慢。

现在,我正在重新绘制整个东西,但是它在一个轴上堆叠在另一个轴上,数百个在使用几分钟之后。

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()

它正在清除初始图,但就像我说轴是堆叠的(因为它每次重绘一次,对应于略微改变的数据点)。有人知道修复吗?

1 个答案:

答案 0 :(得分: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