如何将 contourf 嵌入到 tkinter 中?

How to embed contourf into tkinter?

我们有一些关于在 tkinter 中嵌入带滑块的 matplotlib 的讨论

关键部分是下面的代码

import matplotlib.pyplot as plt
from matplotlib.widgets import Slider
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
matplotlib.use('TkAgg')

root = Tk.Tk()
root.title("Embedding in TK")
fig = plt.Figure()                       
canvas = FigureCanvasTkAgg(fig, root)     
canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)

我的问题集中在'contourf'。

X = np.arange(1,5,1)
Y = np.arange(1,5,1)
x , y = np.meshgrid(X,Y)  
z = [
    [0, 0, 0, 0],
    [0, 1, 1, 0],
    [0, 1, 1, 0],
    [0, 0, 0, 0],
    ]    
conto = plt.contourf(x,y,z)
canvas = FigureCanvasTkAgg(conto,root)
canvas.get_tk_widget().grid(column=0, row=1, pady=15, sticky=tk.W)

以上是我尝试做的;然而,出现错误

AttributeError: 'QuadContourSet' object has no attribute 'set_canvas'

有没有什么办法 'contourf',比如 canvas,这样我们就可以将 contourf 嵌入到 tkinter 中?

这是一个在官方 exampel of matplot in tkinter and a random youtube video 之间混合的工作示例。它对我来说很好用:

import tkinter as tk
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
matplotlib.use('TkAgg')

root = tk.Tk()
root.title("Embedding in TK")

fig = plt.Figure()                       
canvas = FigureCanvasTkAgg(fig, root)     
canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=1)

ax = fig.add_subplot(111)
u = np.linspace(-1,1,100)
x,y = np.meshgrid(u,u)
z = x**2 + y**2
ax.contourf(x,y,z)