-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhistogram.py
More file actions
65 lines (51 loc) · 2.96 KB
/
histogram.py
File metadata and controls
65 lines (51 loc) · 2.96 KB
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
63
64
65
import pandas as pd
import plotly.express as px
class Histogram:
"""
Cette classe représente un histogramme qui affiche les données des doses n°1 du Covid-19 en fonction des âges
Attributs :
isSecondDash (bool) : Indique la deuxième partie du dashboard ( partie des graphes )
data : Contient les données des doses n°1 du Covid-19
filtered_data : Filtrage des données
columnFilter (str) : Nom de la colonne dans la date filtrée
forDisplayY (str) : Axe des ordonnées dans le graphique
forDisplayX (str) : Axe des abscisse dans le graphique
colorDash (str) : Couleur des barres dans le graphique
Méthodes :
__init__(self, isSecondDash) : Initialise l'objet Histogramme
get_dash(self) : Renvoie l'objet graphique
"""
def __init__(self, isSecondDash):
self.isSecondDash = isSecondDash
self.data = pd.read_csv('data/covid19_doses.csv', delimiter=';')
self.data = self.data.dropna()
self.filtered_data = self.data[self.data['Valeur de la variable'] != 0]
if not isSecondDash:
self.columnFilter = 'Nombre cumulé de doses n°1'
self.forDisplayY = "Pourcentage de doses n°1"
self.forDisplayX = "Pourcentage de doses n°1 par tranche d'âges"
self.colorDash = "blue"
else:
self.columnFilter = 'Nombre cumulé de vaccinations complètes (doses n°2)'
self.forDisplayY = "Pourcentage de doses n°2"
self.forDisplayX = "Pourcentage de doses n°2 par tranche d'âges"
self.colorDash = "red"
self.grouped_data = self.filtered_data.groupby((self.filtered_data['Valeur de la variable'] // 10) * 10)[self.columnFilter].sum().reset_index()
self.total_doses = self.grouped_data[self.columnFilter].sum()
self.grouped_data['Pourcentage'] = (self.grouped_data[self.columnFilter] / self.total_doses) * 100
# Intervalles pour chaque tranche
self.grouped_data['Intervalles'] = self.grouped_data['Valeur de la variable'].astype(str) + '-' + (self.grouped_data['Valeur de la variable'] + 9).astype(str)
# Arrondir le pourcentage
self.grouped_data['Pourcentage'] = self.grouped_data['Pourcentage'].round(2)
self.fig = px.bar(self.grouped_data, x='Intervalles', y='Pourcentage',
labels={"Pourcentage": self.forDisplayY, "Intervalles": "Tranches d'âges"},
title=self.forDisplayX,
color = 'Intervalles', # Utilisation du paramètre 'color' pour spécifier la couleur par barre
color_discrete_sequence = [self.colorDash] # Changer la couleur des barres ici
)
self.fig.update_traces(texttemplate='%{y:f}%', textposition='outside')
self.fig.update_layout(
margin=dict(l=50, r=20, t=50, b=50), # Ajuste les marges
)
def get_dash(self):
return self.fig