diff options
Diffstat (limited to 'trace_courbe.py')
-rw-r--r-- | trace_courbe.py | 65 |
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 | |||
5 | import gestion_unites as u | 5 | import gestion_unites as u |
6 | from gestion_donnees import calcule_max_graphique, convertit_jours_vers_python, convertit_age_vers_texte | 6 | from gestion_donnees import calcule_max_graphique, convertit_jours_vers_python, convertit_age_vers_texte |
7 | from gestion_erreurs import debug, erreur, warning | 7 | from gestion_erreurs import debug, erreur, warning |
8 | from 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 | |||
8 | from numpy import arange | 10 | from numpy import arange |
9 | from calculs_extrapole import calcule_donnee_extrapolee, calcule_age_extrapole | 11 | |
10 | 12 | ||
11 | import matplotlib.pyplot as plt | 13 | import 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 | |||
412 | def 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) | ||