首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >销毁并重新创建用FigureCanvasTkAgg实现的matplotlib图

销毁并重新创建用FigureCanvasTkAgg实现的matplotlib图
EN

Stack Overflow用户
提问于 2020-01-31 09:40:19
回答 1查看 64关注 0票数 0

我正在创建一个Tkinter程序,其中用户可以输入一个值来使用matplotlib-venn创建着色的Venn图。这是我的代码的一部分,当输入公式后点击'calculate‘按钮时,它会在Tkinter的画布上绘制matplotlib图。

代码语言:javascript
复制
def whenClicked():
    if str(selected.get()) == '3':
        plot1, v1 = configuration.createVenn3(formula.get())
        diagram = FigureCanvasTkAgg(plot1, master=window)
    if str(selected.get()) == '2':
        plot2, v2 = configuration.createVenn2(formula.get())
        diagram = FigureCanvasTkAgg(plot2, master=window)
    diagram.get_tk_widget().pack()
    diagram.draw()

if-语句用于确定Venn图中的圆数,是否使matplotlib-venn在matplotlib-venn的2-圆或3-圆系统中绘制图。因此,从字面上讲,顺序是配置plot和v,然后定义图,它是canvas的对象,然后在Tkinter的画布上绘制图。

因此,FigureCanvasTkAgg函数将创建一个名为的新变量,并将配置好的图表绘制到图形用户界面上。然而,这里我很好奇,当用户输入新公式并再次单击按钮时,如何配置Python来删除(销毁)图表并创建(绘制)一个新公式。目前在上面的设置中,当我使用新的公式再次单击按钮时,新的图表将绘制在旧图表的下方,而不会破坏旧图表,因此这不是一个好主意。我希望新的图表将绘制在与旧图表完全相同的位置。

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2020-01-31 12:30:41

没有Minimal, Complete, and Verifiable example是不可能用一些代码来回答你的问题的,但基本上你不应该在每次绘制东西的时候重新创建一个新的图形/ FigureCanvasTkAgg。

其基本思想是在应用程序初始化期间创建一次Figure + FigureCanvasTkAgg,并可能同时在该figure上创建一个轴。

然后,您应该编写绘图函数so that it accept the axes as a parameter。这样,在处理按钮单击的函数中,您可以清除轴的内容(Axes.cla()),并使用绘图函数在现有轴上绘制新的图表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59996895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档