From 95096af181feed79484580fc5a817273c1de43ba Mon Sep 17 00:00:00 2001 From: gribse Date: Mon, 10 Feb 2025 23:44:38 +0100 Subject: [PATCH] =?UTF-8?q?r=C3=A9par=C3=A9=20l'axe=20de=20gachue,=20il=20?= =?UTF-8?q?s'affiche=20mais=20n'affiche=20que=2015=20ticks=20au=20lieud=20?= =?UTF-8?q?e=2021?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- abaqueCuve.py | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/abaqueCuve.py b/abaqueCuve.py index 2508aff..c9e1fda 100644 --- a/abaqueCuve.py +++ b/abaqueCuve.py @@ -38,7 +38,8 @@ def find_f(A, R): except ValueError: return None # Retourne None si aucun zéro trouvé -# Création d'une échelle temporelle + +# Création d'une échelle temporelle : une valeur par mois sur x mois dates = [date_debut.replace(day=1) + datetime.timedelta(days=30*i) for i in range(duree_graphe)] # Capacité maximale de la cuve (cylindre entier) @@ -47,35 +48,41 @@ volume_max = np.pi * rayon_cuve**2 * longueur_cuve # Liste des volumes pour chaque date volumes = np.linspace(0, volume_max, len(dates)) + # Création de la liste de flèches + flèches = np.linspace(0, 2 * rayon_cuve, len(dates)) # Création des graduations de l'axe de droite right_ticks = np.linspace(0, 2 * rayon_cuve, nb_grad_fleche) + right_tick_positions = [find_f(v / longueur_cuve, rayon_cuve) for v in right_ticks * volume_max / (2 * rayon_cuve)] + # Supprimer les valeurs None (au cas où) volumes = np.array([v for i, v in enumerate(volumes) if flèches[i] is not None]) flèches = np.array([f for f in flèches if f is not None]) + # Espacement en flèche pour avoir des graduations équidistantes en volume + volumes_grad = np.linspace(0, volume_max, nb_grad_fleche) flèche_grad = [find_f(v / longueur_cuve, rayon_cuve) for v in volumes_grad] -plt.rcParams.update({'font.size': 22}) # Taille du texte - # Tracer le graphe +plt.rcParams.update({'font.size': 22}) # Taille du texte fig, ax1 = plt.subplots(figsize=(29.7-1, 21-1)) # Format A4 avec une marge de 1 cm # Axe principal : Volume en fonction des mois volumes_L = volumes * 1000 # Conversion en litres -ax1.plot(dates, volumes_L, label="Volume (L)", color='b', linewidth=2, alpha=0) +ax1.plot(dates, volumes_L, label="Volume (L)", color='b', linewidth=2) ax1.set_ylabel("Volume (L)", color='b') ax1.tick_params(axis='y', labelcolor='b') -ax1.yaxis.set_major_locator(plt.MaxNLocator(nb_grad_volume)) # Configuration du nombre de graduations -ax1.set_ylim(bottom=0, top=volume_max * 1000) # Limite inférieure à 0 et supérieure à la capacité maximale +# Configuration du nombre de graduations +ax1.yaxis.set_major_locator(plt.MaxNLocator(nb_grad_volume)) + # Dates en abscisse ax1.xaxis.set_major_formatter(mdates.DateFormatter("%m/%Y")) # Format mois (numérique) année @@ -92,7 +99,6 @@ right_ticks_cm = [f * 100 for f in right_ticks] # Valeurs en cm right_ticks_text = [f"{f:.0f}" for f in right_ticks_cm] # Texte des labels ax2.set_yticklabels(right_ticks_text) # Labels affichés -ax2.set_ylim(bottom=0, top=2 * rayon_cuve) # Limite inférieure à 0 et supérieure à la hauteur maximale ax2.plot(dates, flèches, label="Hauteur de remplissage (cm)", color='r', linestyle='dashed', linewidth=2) ax2.set_ylabel("Hauteur de remplissage (m)", color='r') @@ -102,10 +108,6 @@ ax2.tick_params(axis='y', labelcolor='r') ax2.set_yticks(flèche_grad) # Aligner les graduations de l'axe de droite sur les hauteurs ax2.grid(visible=True, linestyle='--', alpha=0.6, which='both') # Quadrillage en pointillé -# Ajouter un quadrillage qui colle aux volumes -ax1.set_yticks(volumes_grad) # Aligner les graduations de l'axe de gauche sur les volumes -ax1.grid(visible=True, linestyle='--', alpha=0.6, which='both') # Quadrillage en pointillé - # Show the plot fig.tight_layout() plt.show()