Tkinter继续创建嵌入的绘图,而不是更新当前的p

2024-10-01 22:26:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道网上有几个问题,但不幸的是,这些问题都没有帮助我。我的相关matplotlib导入包括:

import matplotlib
matplotlib.use("TkAgg")
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure

以下是我如何呼吁新的情节:

^{pr2}$

我有一个刷新按钮,它一直在调用最终创建这个绘图的函数,但我需要一个嵌入的绘图,它在每次单击按钮后都会更新,而不是重新创建。我尝试过类似Figure.close(), Figure.clf()的方法,但都没用。谢谢你的帮助。在

附加信息:它不断地创建新的绘图是因为我不断地把它网格化。所以我删除了代码的.grid()部分,并尝试了下面这样的方法,但没有成功:

self.myFig1.clf()
self.myFig1  = Figure(figsize = (10, 4), tight_layout = True)
self.myPlot1 = self.myFig1.add_subplot(111)
self.myPlot1.plot([blah],[blah])
canvas1 = FigureCanvasTkAgg(self.myFig1, self.myFrame)
canvas1.draw()

这只会破坏人物,画布,所有的东西,而不会画任何东西。在


Tags: 方法fromimportself绘图matplotlibuse按钮
2条回答
    self.myFig.clear()
    self.myPlot = self.myFig.add_subplot(111,  **self.nadalkwArgs)
    self.myPlot.plot([series1], [series2])
    self.myFig.canvas.draw()

解决了我的问题。您的“刷新绘图”按钮或方法应该有这样的功能,以便保留画布、清除旧绘图、创建新绘图并保留绘图样式元素,如xlabel、ylabel等。因此,基本上,首先清除图形(而不是子图,self.myPlot.clear()会把情节弄清楚,但你不能那样做,然后你用kwargs重新创建子图,然后绘制,最后绘制。画布.draw()

没有必要重新创建一个新的画布或无花果。 在网格化您的FigureCanvasTkAgg之后,您只能通过以下方式重置line in按钮回调:

self.myPlot1.set_data(xdata,ydata)
self.myFig.canvas.draw()

相关问题 更多 >

    热门问题