summaryrefslogtreecommitdiff
path: root/trace_courbe.py
diff options
context:
space:
mode:
Diffstat (limited to 'trace_courbe.py')
-rw-r--r--trace_courbe.py65
1 files changed, 55 insertions, 10 deletions
diff --git a/trace_courbe.py b/trace_courbe.py
index e725607..28ee5b4 100644
--- a/trace_courbe.py
+++ b/trace_courbe.py
@@ -5,8 +5,10 @@ import gestionOMS as oms
5import gestion_unites as u 5import gestion_unites as u
6from gestion_donnees import calcule_max_graphique, convertit_jours_vers_python, convertit_age_vers_texte 6from gestion_donnees import calcule_max_graphique, convertit_jours_vers_python, convertit_age_vers_texte
7from gestion_erreurs import debug, erreur, warning 7from gestion_erreurs import debug, erreur, warning
8from calculs_extrapole import calcule_donnee_extrapolee, calcule_age_extrapole, interpole_lineaire, interpole_lineaire_ordonnee, formate_resultat_donnee, formate_resultat_age, formate_interpole, formate_extrapole
9
8from numpy import arange 10from numpy import arange
9from calculs_extrapole import calcule_donnee_extrapolee, calcule_age_extrapole 11
10 12
11import matplotlib.pyplot as plt 13import matplotlib.pyplot as plt
12 14
@@ -167,6 +169,7 @@ def cree_figure(conf,l_jours,l_poids,typedonnee,liste_extracalculs, liste_err):
167 jextrapole = jextrapole or conf["non_sauve"][calextra+"_type"] == typedonnee 169 jextrapole = jextrapole or conf["non_sauve"][calextra+"_type"] == typedonnee
168 170
169 #print(jextrapole) 171 #print(jextrapole)
172 ############################## Là où on extrapole ################################
170 if jextrapole: 173 if jextrapole:
171 try: 174 try:
172 debug("Il faut extrapoler les courbes !", liste_err) 175 debug("Il faut extrapoler les courbes !", liste_err)
@@ -181,6 +184,7 @@ def cree_figure(conf,l_jours,l_poids,typedonnee,liste_extracalculs, liste_err):
181 184
182 debug("On extrapole sur les jours : "+str(sources_extrap), liste_err) 185 debug("On extrapole sur les jours : "+str(sources_extrap), liste_err)
183 186
187 # On récupère toutes les données extrapolées
184 dates_extrapole, donnees_extrapole = prolongecourbe(t, sources_extrap, sources_extrap_data, conf["typecourbe"], liste_err) 188 dates_extrapole, donnees_extrapole = prolongecourbe(t, sources_extrap, sources_extrap_data, conf["typecourbe"], liste_err)
185 debug("données extrapolées !", liste_err) 189 debug("données extrapolées !", liste_err)
186 #debug(str(dates_extrapole[0:10])+str(donnees_extrapole[0:10]), liste_err) 190 #debug(str(dates_extrapole[0:10])+str(donnees_extrapole[0:10]), liste_err)
@@ -201,19 +205,50 @@ def cree_figure(conf,l_jours,l_poids,typedonnee,liste_extracalculs, liste_err):
201 plt.plot(dates_extrapole_trace, donnees_extrapole_trace,color=conf["couleurs"]["cadretxt"], linestyle=(0, (5,7)), marker=None) 205 plt.plot(dates_extrapole_trace, donnees_extrapole_trace,color=conf["couleurs"]["cadretxt"], linestyle=(0, (5,7)), marker=None)
202 debug("Tracé de la courbe extrapolée ok", liste_err) 206 debug("Tracé de la courbe extrapolée ok", liste_err)
203 207
204 # Calculer une donnée à l'âge x 208 ### Calculer une donnée à l'âge x
205 if conf["non_sauve"]["calculextradata_type"] == typedonnee: 209 if conf["non_sauve"]["calculextradata_type"] == typedonnee:
206 r = calcule_donnee_extrapolee(dates_extrapole, donnees_extrapole, conf["non_sauve"]["calculextradata_age"], typedonnee, liste_err) 210 # On essaie l'interpolation
207 if r!="": 211 r = interpole_lineaire(l_jours,l_poids,conf["non_sauve"]["calculextradata_age"], liste_err)
208 liste_extracalculs.append(r) 212 if r==-1:
213 # ça sera donc une extrapolation
214 r = calcule_donnee_extrapolee(dates_extrapole, donnees_extrapole, conf["non_sauve"]["calculextradata_age"], liste_err)
215 message=formate_extrapole(conf["non_sauve"]["nbextradata"])
216# if == 0:
217# message+="l'ensemble des données"
218# else:
219# message+="les "+str(conf["non_sauve"]["nbextradata"])+" dernière"+met_s(conf["non_sauve"]["nbextradata"])+" données"
220 else:
221 message=formate_interpole()
222
223 texte = formate_resultat_donnee(conf["non_sauve"]["calculextradata_age"], r, typedonnee, message, liste_err)
224 debug("calcul de la donnée extrapolée : "+texte, liste_err)
225 if texte!="":
226 liste_extracalculs.append(texte)
209 print(liste_extracalculs) 227 print(liste_extracalculs)
228 # Ajouter le trait ?
229 if conf["non_sauve"]["calculextradata_trace"] == "oui":
230 dessine_guides(conf["non_sauve"]["calculextradata_age"], r, conf["couleurs"]["cadretxt"], unite, ax, liste_err)
210 231
211 # Calculer un âge où on atteint cette donnée 232 ### Calculer un âge où on atteint cette donnée
212 if conf["non_sauve"]["calculextratemps_type"] == typedonnee: 233 if conf["non_sauve"]["calculextratemps_type"] == typedonnee:
213 r = calcule_age_extrapole(dates_extrapole, donnees_extrapole, conf["non_sauve"]["calculextratemps_val"], typedonnee, liste_err) 234 # interpolation
214 if r!="": 235 r = interpole_lineaire_ordonnee(l_jours,l_poids,conf["non_sauve"]["calculextratemps_val"], liste_err)
215 liste_extracalculs.append(r) 236 if r==-1:
237 # ça sera donc une extrapolation
238 r = calcule_age_extrapole(dates_extrapole, donnees_extrapole, conf["non_sauve"]["calculextratemps_val"], liste_err)
239 message=formate_extrapole(conf["non_sauve"]["nbextradata"])
240 else:
241 message=formate_interpole()
242
243 texte = formate_resultat_age(r, conf["non_sauve"]["calculextratemps_val"], typedonnee, message, liste_err)
244
245 #r = calcule_age_extrapole(dates_extrapole, donnees_extrapole, conf["non_sauve"]["calculextratemps_val"], typedonnee, liste_err)
246 if texte!="":
247 liste_extracalculs.append(texte)
216 print(liste_extracalculs) 248 print(liste_extracalculs)
249 # Ajouter le trait ?
250 if conf["non_sauve"]["calculextratemps_trace"]:
251 dessine_guides(r, conf["non_sauve"]["calculextratemps_val"], conf["couleurs"]["cadretxt"], unite, ax, liste_err)
217 252
218 except: 253 except:
219 warning("Des problèmes pour extrapoler...", liste_err) 254 warning("Des problèmes pour extrapoler...", liste_err)
@@ -371,4 +406,14 @@ def prolongecourbe(tableauOMS, dates, donnees, typecourbe, liste_err):
371 ligne2 = tableauOMS[int(j)] 406 ligne2 = tableauOMS[int(j)]
372 nouvdonnees.append(coeff_moyen*ligne2[imin]+ (1-coeff_moyen)*ligne2[imax]) 407 nouvdonnees.append(coeff_moyen*ligne2[imin]+ (1-coeff_moyen)*ligne2[imax])
373 408
374 return nouvdates,nouvdonnees \ No newline at end of file 409 return nouvdates,nouvdonnees
410
411
412def dessine_guides(t, data, couleur, unite, ax, liste_err):
413 """ dessine deux lignes, horizontales et verticales qui vont "vers" la courbe
414 jusqu'aux points (t, data). En pointillés et avec un point dessus."""
415 debug("Début de dessine_guides"+str(t)+", "+str(data), liste_err)
416 t_conv = u.convertitunite(t,unite,liste_err)
417 ax.vlines(t_conv, 0, data, colors=couleur, linestyles="dashed")
418 ax.hlines(data, 0, t_conv, color=couleur, linestyles="dashed")
419 ax.plot([t_conv], [data], color=couleur, marker="*", ms=13)