From b982ba45aa9b91ba85bff4643f0a1983eb76743b Mon Sep 17 00:00:00 2001 From: Mylloon Date: Tue, 30 Nov 2021 21:06:29 +0100 Subject: [PATCH] Adding histogram --- main.py | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/main.py b/main.py index 3ebcd6b..b68ddd5 100644 --- a/main.py +++ b/main.py @@ -786,11 +786,10 @@ class GesMag: Label(frameInfos, text=utilisateur[cle]).grid(column=1, row=idx + 1, sticky='w') frameSuivi = LabelFrame(enfant, text="Histogramme des ventes", font=self.font) - frameSuivi.grid(column=1, row=0, sticky='n', padx=5) + frameSuivi.grid(column=1, row=0, sticky="ns", padx=5) def ___actualisationCanvas(): """Affiche l'histogramme des vente d'un utilisateur dans un canvas.""" - print(f"Affichage des stats de {utilisateur['id']} dans {histogramme}...") donnees = Stats().recuperationDonneesCSV(utilisateur['id']) if len(donnees) <= 0: histogramme.create_text(10, 10, anchor='w', text="Aucun résultat récemment enregistré") @@ -799,11 +798,35 @@ class GesMag: # On retire l'ID et le pseudo du dictionnaire donnees.pop("id") donnees.pop("pseudo") - for date in sorted(donnees.keys()): # on regarde les dates dans l'ordre - print(donnees[date]) - histogramme.create_text(10, 10, anchor='w', text="Résultat présents...") + ecart = 10 + couleurs = [ + "CadetBlue3", + "HotPink2", + "IndianRed1", + "MediumPurple2", + "burlywood2", + "brown3", + "chocolate1", + "goldenrod2" + ] + maxVente = 0 # par défaut la meilleur vente est de 0 + for prix in donnees.values(): + prix = float(prix) + if prix > maxVente: # si on trouve une valeure plus grande + maxVente = prix - histogramme = Canvas(frameSuivi, width=270, height=144) + for date in sorted(donnees.keys()): # on regarde les dates dans l'ordre + # Affichage de la date + histogramme.create_text(ecart + 10, 60, anchor='w', text=date, font=("Arial", 8), angle=90) + # Affichage de la barre + hauteur = 190 - (float(donnees[date]) * 100) / maxVente # calcul de la hauteur en fonction de la plus grosse vente + # On fait `- 20` au résultat pour allonger la barre, aussi on met une barre de `2` pixel quand valeur petite + histogramme.create_rectangle(ecart, 180, ecart + 15, hauteur - 20 if hauteur < 180 else 178, fill=couleurs.pop()) + # Affichage du montant + histogramme.create_text(ecart, 190, anchor='w', text=donnees[date], font=("Arial", 8)) + ecart += 30 + + histogramme = Canvas(frameSuivi, width=270, height=200) histogramme.grid() ___actualisationCanvas()