Bonjour, j'aimerais pour un projet afficher une carte de chaleur à l'intérieur d'une fenêtre tkinter.

Bien que ce ne soit pas ce que je voulais, j'ai déjà réussis à afficher un graphe de matplotlib, en revanche je n'arrive pas à afficher la fenêtre de chaleur dans la fenêtre...
Je n'arrive pas non plus à trouver d'explications sur internet expliquant comment gérer ce cas particulier.

Serait-il possible d'avoir un lien/une explication/un code/une correction pour me permettre de comprendre comment résoudre mon problème ?
Je précise (au cas où) que je programme en python 3.8 dans un environnement spyder.

Le code que j'ai fait pour afficher le graphe et pour tenter d'afficher la carte de chaleur est ici :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import matplotlib
matplotlib.use("TkAgg")
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
 
import tkinter as tk
 
 
 
class Principal(tk.Tk):
 
    def __init__(self):
        tk.Tk.__init__(self)  #faut pas faire attention, c'est juste pour simplifier
 
        container = tk.Frame(self)  #création du frame dans lequel devrait s'afficher la carte des chaleurs 
        container.pack(side="top",fill="both",expand=True)
 
        self.frame = Graphe(container) # test avec un graphe (classe Graphe)
        self.frame.grid(row=0,column=0,sticky="nsew")
        self.frame = Chaleur(container) #tentative d'afficher la carte de chaleur sur le frame
        self.frame.grid(row=0,column=0,sticky="nsew")
 
#classe qui sert à rien, c'est juste pour tester
class Graphe(tk.Frame):
 
    def __init__(self, parent):
        tk.Frame.__init__(self, parent)
        label = tk.Label(self, text="Graphe")
        label.pack(pady=10,padx=10)
 
        f = Figure(figsize=(8,5), dpi=100)
        a = f.add_subplot(111)
        a.plot([1,2,3,4,5,6,7,8],[5,6,1,3,8,9,3,5])
 
        canvas = FigureCanvasTkAgg(f, self)
        canvas.get_tk_widget().pack(side=tk.BOTTOM, fill=tk.BOTH, expand=True)
 
#classe pour afficher la carte de chaleur
class Chaleur(tk.Frame):
    def __init__(self, parent):
        tk.Frame.__init__(self,parent) #initialisation du parent
        label = tk.Label(self,text="Carte de chaleur")
        label.pack(pady=10,padx=10)
 
        f = Figure(figsize=(5,5), dpi=90) 
        matTest = [[1,30,2,20],[4,100,35,15],[10,60,12,28]] #matrice juste pour tester
        c = f.add_subplot(111)                                             #pour paramétrer le positionnement de c dans f
        c = matplotlib.pyplot.imshow(matTest,cmap="hot")    #création de la carte de chaleur
 
        canvas = FigureCanvasTkAgg(f, self)  #affichage sur un canvas
        canvas.get_tk_widget().pack(side=tk.BOTTOM,fill=tk.BOTH,expand=True)
 
#boucle principale
appli = Principal()
appli.mainloop()
Merci d'avance !