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()