Adding histogram

This commit is contained in:
Mylloon 2021-11-30 21:06:29 +01:00
parent 204cb40614
commit b982ba45aa

35
main.py
View file

@ -786,11 +786,10 @@ class GesMag:
Label(frameInfos, text=utilisateur[cle]).grid(column=1, row=idx + 1, sticky='w') Label(frameInfos, text=utilisateur[cle]).grid(column=1, row=idx + 1, sticky='w')
frameSuivi = LabelFrame(enfant, text="Histogramme des ventes", font=self.font) 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(): def ___actualisationCanvas():
"""Affiche l'histogramme des vente d'un utilisateur dans un canvas.""" """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']) donnees = Stats().recuperationDonneesCSV(utilisateur['id'])
if len(donnees) <= 0: if len(donnees) <= 0:
histogramme.create_text(10, 10, anchor='w', text="Aucun résultat récemment enregistré") 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 # On retire l'ID et le pseudo du dictionnaire
donnees.pop("id") donnees.pop("id")
donnees.pop("pseudo") donnees.pop("pseudo")
for date in sorted(donnees.keys()): # on regarde les dates dans l'ordre ecart = 10
print(donnees[date]) couleurs = [
histogramme.create_text(10, 10, anchor='w', text="Résultat présents...") "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() histogramme.grid()
___actualisationCanvas() ___actualisationCanvas()