diff --git a/graphs/gen_remuneration_hours_graph.py b/graphs/gen_remuneration_hours_graph.py new file mode 100644 index 0000000..ca0f7f4 --- /dev/null +++ b/graphs/gen_remuneration_hours_graph.py @@ -0,0 +1,88 @@ +import numpy as np + +import matplotlib.pyplot as plt + +# Dictionnaire contenant +# => le numéro de la semaine en clé +# -> le nombre d'heures prévisionnelles +# -> le nombre d'heures réelles en valeur +# /!\ Le nombre d'heures est déjà multiplié par le nombre de personnes dans le groupe (4 personnes) +semaines = { + 37: [32, 32], + 38: [16, 16], + 39: [24, 25], + 40: [32, 34.5], + 41: [24, 24], + 42: [32, 40], + 2: [24, 28], + 3: [16, 16], + 4: [24, 24], + # 5: [24, ], + # 6: [32, ], + # 7: [8, ], +} + +cout_horaire_avec_charges_patronales = 12.16 # €/h (SMIC 2024) + +# Séparation des semaines en deux périodes +semaines_periode_1 = {k: v for k, v in semaines.items() if k >= 37} +semaines_periode_2 = {k: v for k, v in semaines.items() if k < 37} + +# Calcul des sommes cumulées pour la période 1 +heures_previsionnelles_periode_1 = np.cumsum([i[0] for i in semaines_periode_1.values()]) +heures_reelles_periode_1 = np.cumsum([i[1] for i in semaines_periode_1.values()]) + +# Graphique des heures prévisionnelles et réelles pour la période 1 +plt.figure(figsize=(12, 6)) +plt.plot(semaines_periode_1.keys(), heures_previsionnelles_periode_1, label="Prévisionnelles", marker='o') +plt.plot(semaines_periode_1.keys(), heures_reelles_periode_1, label="Réelles", marker='o') +plt.legend() +plt.title("Heures prévisionnelles et réelles cumulées (Période 1)") +plt.xlabel("Semaines") +plt.ylabel("Heures cumulées") +plt.grid() + +# Calcul des sommes cumulées pour la période 2 en ajoutant les valeurs finales de la période 1 +heures_previsionnelles_periode_2 = np.cumsum([i[0] for i in semaines_periode_2.values()]) + heures_previsionnelles_periode_1[-1] +heures_reelles_periode_2 = np.cumsum([i[1] for i in semaines_periode_2.values()]) + heures_reelles_periode_1[-1] + +# Graphique des heures prévisionnelles et réelles pour la période 2 +plt.figure(figsize=(12, 6)) +plt.plot(list(semaines_periode_2.keys()), heures_previsionnelles_periode_2, label="Prévisionnelles", marker='o') +plt.plot(list(semaines_periode_2.keys()), heures_reelles_periode_2, label="Réelles", marker='o') +plt.legend() +plt.title("Heures prévisionnelles et réelles cumulées (Période 2)") +plt.xlabel("Semaines") +plt.ylabel("Heures cumulées") +plt.xticks(list(semaines_periode_2.keys())) # Set x-ticks to be the week numbers +plt.grid() + +# Calcul des budgets cumulés pour la période 1 +budget_previsionnel_periode_1 = heures_previsionnelles_periode_1 * cout_horaire_avec_charges_patronales +budget_reel_periode_1 = heures_reelles_periode_1 * cout_horaire_avec_charges_patronales + +# Histogramme des budgets pour la période 1 +plt.figure(figsize=(12, 6)) +plt.bar(semaines_periode_1.keys(), budget_previsionnel_periode_1, width=0.4, label="Prévisionnel", align='center') +plt.bar(semaines_periode_1.keys(), budget_reel_periode_1, width=0.4, label="Réel", align='edge') +plt.legend() +plt.title("Budget prévisionnel et réel cumulés (Période 1)") +plt.xlabel("Semaines") +plt.ylabel("Budget cumulé (€)") +plt.grid() + +# Calcul des budgets cumulés pour la période 2 en ajoutant les budgets de la période 1 +budget_previsionnel_periode_2 = heures_previsionnelles_periode_2 * cout_horaire_avec_charges_patronales + budget_previsionnel_periode_1[-1] +budget_reel_periode_2 = heures_reelles_periode_2 * cout_horaire_avec_charges_patronales + budget_reel_periode_1[-1] + +# Histogramme des budgets pour la période 2 +plt.figure(figsize=(12, 6)) +plt.bar(list(semaines_periode_2.keys()), budget_previsionnel_periode_2, width=0.4, label="Prévisionnel", align='center') +plt.bar(list(semaines_periode_2.keys()), budget_reel_periode_2, width=0.4, label="Réel", align='edge') +plt.legend() +plt.title("Budget prévisionnel et réel cumulés (Période 2)") +plt.xlabel("Semaines") +plt.ylabel("Budget cumulé (€)") +plt.xticks(list(semaines_periode_2.keys())) +plt.grid() +plt.show() \ No newline at end of file