Bonjour, je suis en stage dans une start up ou il n'y a pas d'informaticien. Je suis en ecole d'ingenieur mais mes conaissance en code sont assez limite.
Je fais un code qui fais des calcules matriciel (ACP). j'ai d'abord fais un code sans interface graphique qui marche et qui fais des jolie graph ( avec titre, point et label pour chaque donne, grille...)
Maintenant je dois faire une interface graphique ( je n'en n'avais jamais fait). Nom : 67603466_544099842793966_4324036858725007360_n.png
Affichages : 235
Taille : 53,7 Ko
Dans ce code j ai deux fonction: l'un qui fais les premiers calcule, et un autre qui est fait pour d'autre calcule.
Dans ces deux programmes je cree des graph matplolib mais que je veux pas afficher ( juste les créer pr les sauvegarder).

Mon probleme : je n'arrive pas a afficher mon graph du premier programme dans l'interface. Soit rien n'apparait, soit il y a un carre gris a la place.
( ca ne peut pas etre un probleme de format j'ai reussi a le faire apparaitre mais quand je le metter ds la deuxieme fonction et quand je laisser mes plt.show(), des que j' enleve c est plt.show ca bug ( pourtant je veux pas de nouvelle fenetre avec ces graph)
Si quelqu'un aurais une idee ca serais agreable (desole pour le post tres long )
Voici une partie de mon code :

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
56
57
58
59
60
61
62
 
def ACP():
.
.
.
    #graphique variance
    # Create dataframe
    df = pd.DataFrame({
    'x': x,
    'y':VaPtri,
    'group': Variance
    })
    sns.regplot(data=df, x="x", y="y", fit_reg=False, marker="+", color="skyblue")
    # basic plot
    p1=sns.regplot(data=df, x="x", y="y", fit_reg=False, marker="o", color="skyblue")
    # add annotations one by one with a loop
    for line in range(0,df.shape[0]):
        p1.text(df.x[line]+0.1, df.y[line], df.group[line], horizontalalignment='left', size='medium', color='black', weight='semibold')
    plt.grid()
    plt.xlabel('Numero de valeur propre')
    plt.ylabel('Valeur propre')
    plt.title('Variance accumulé')
    plt.savefig(nom+'variance'+'.png')
    NOM.set(nom)
    plt.plot(x,VaPtri)
 
    image = Image.open(nom+'variance'+'.png')
    photo = ImageTk.PhotoImage(image)
    largeur = photo.width()  # dimensions en nombre de pixels
    hauteur = photo.height()
    zone_image = Canvas(Mafenetre, width = largeur, height = hauteur) # crée un canevas de dimensions ajustées à celles de l'image
    zone_image.create_image(0,0, anchor = NW, image = photo) # association image/widget
    zone_image.grid(column=0,row=10) # placement du widget
 
    return
def graphique():
.
. 
return
.
.
.
 
 
##interface
 
# Creation d'une fenetre principale : Main window
Mafenetre = Tk()
Mafenetre.title("ACP")
Mafenetre.geometry('120000x600')
Mafenetre.configure(bg = "white")
 
#bouton lancer Graphique
Frame12 = Frame(Mafenetre,borderwidth=2,relief=GROOVE,bg='gold')
Frame12.grid(rowspan=2,column=  2,row=6)
Label(Frame12,text=" Projections",bg='gold').grid(row=6, column=2)
Button(Frame12,text="Lancer",fg='navy',command=Graphique,bg='gold').grid(row=7, column=2)
#bouton lancer ACP
Frame2 = Frame(Mafenetre,borderwidth=2,relief=GROOVE,bg='deep sky blue')
Frame2.grid(rowspan=2,column=2,row=2)
Label(Frame2,text="ACP",bg='deep sky blue').grid(row=2, column=2)
Button(Frame2,text="Lancer",fg='navy',command=ACP,bg='deep sky blue').grid(row=3, column=2)
( j ai essaye d autre maniere d integre matplolib ds tkinder mais le graph est pas beau, y a pas les label, y a plus la grille, y a plus les points... et j ai essaye de le mettre pas moyen avec ce code)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
    figure1 = Figure(figsize=(5,4), dpi=100) 
    subplot1 = figure1.add_subplot(111) 
    plt.grid()
    plt.xlabel('Numero de valeur propre')
    plt.ylabel('Valeur propre')
    plt.title('Variance accumulé')
    subplot1.plot(x,VaPtri, color = 'g')   
    bar1 = FigureCanvasTkAgg(figure1,Mafenetre) 
    bar1.get_tk_widget().grid(column=0, row=10)