--------------
-Attention : application de licences :
+Attention : application des licences :
+
+Le dossier data_OMS est sous licence CC BY-NC-SA 3.0 IGO
+https://creativecommons.org/licenses/by-nc-sa/3.0/igo/
+
+Le reste du projet est sous licence MIT "X11"
+https://fr.wikipedia.org/wiki/Licence_MIT
-Le dossier data_OMS est sous licence CC BY-NC-SA 3.0 IGO
-Le reste du projet est sous licence
--- /dev/null
+Ce projet, à l'exception du dossier data_OMS (voir fichier COPYING), est sous licence MIT "X11"
+(plus d'informations en français https://fr.wikipedia.org/wiki/Licence_MIT )
+
+----------------
+Copyright © 2020, Denise Maurice
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+The Software is provided “as is”, without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders X be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the Software.
+Except as contained in this notice, the name of Denise Maurice shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from Denise Maurice.
## charger les donneés dans le formulaire
fichier = flask.request.files['fichier_donnees']
- val_form = fichier_json_vers_configdonnees(fichier,liste_err)
+ val_form2 = fichier_json_vers_configdonnees(fichier,liste_err)
+ val_form.update(val_form2)
#return str(val_form['nb_data'])
return flask.render_template("index.html",err=liste_err[1],valform=val_form)
config = gere_configuration(data,liste_err)
l_jours,l_poids = gere_donneespoids(data,config["naissance"],liste_err)
- #print(config)
+
texte = donnees_vers_json(l_jours,l_poids,config)
# noter le nom de l'enfant pour l'export
nomenfant = simplifie_nom(config['nom'])
+ #warning(str(config),liste_err)
+
# créer la figure
try:
fig = cree_figure(config,l_jours,l_poids,liste_err)
plt.close(fig)
except:
result = "fail"
- liste_err[0].append("Impossible de générer la courbe !")
+ liste_err[0].append("Impossible de générer la courbe ! Config : "+str(config))
if ext == "b64":
else:
return flask.render_template("erreur_fatale.html",erreur="Le type d'image demandé n'est pas reconnu")
- #return flask.Response(base64.b64encode(output.getvalue()), mimetype='text/plain')
-
-#@app.route("/export_donnees",methods=['POST'])
-#def export_donnees():
-# # exporte les données au format texte
-# liste_err = initialise_erreurs()
-# data = flask.request.form
-#
-# config = gere_configuration(data,liste_err)
-# l_jours,l_poids = gere_donneespoids(data,config["naissance"],liste_err)
-#
-# texte = configuration_vers_texte(config)
-# texte += donnees_poids_vers_texte(l_jours,l_poids)
-#
-# #texte = donnees_vers_json(l_jours,l_poids,config)
-# #return flask.Response(texte,mimetype="application/json")
-# return flask.Response(texte,mimetype="text/plain")
+
+@app.route("/contact")
+def contact():
+ return flask.render_template("contact.html",err=[])
@app.route("/faq")
def faq():
liste_data_choisie_z = [(2,-3),(3,-2),(4,-1),(5,0),(6,1),(7,2),(8,3)]
liste_data_choisie_z.sort(reverse=True)
+
+CONFIG = {}
+
liste_unites_valides = ["jours", "semaines", "mois", "années"]
# nombre de jours dans autre chose
jours_dans_annee = 365.25
jours_dans_semaine = 7
-
## Maxi et mini de "sécurité"
# jours maxi
-jours_maxi_courbe = 6.2*jours_dans_annee
+jours_maxi_courbe = 5.5*jours_dans_annee
# poids max (protection)
poids_maxi = 80
# taille max du nom
longueur_max_nom_bebe = 100
-
-### Taille du graphique par défaut (pouces, en 80 points par pouce)
-largeur_graphique = 10
-hauteur_graphique = 7
-
#largeurs et hauteurs min et max
largeur_graphique_max = 40
-largeur_graphique_min = 2
+largeur_graphique_min = 3
hauteur_graphique_max = 40
hauteur_graphique_min = 2
+
+
+## Configuration "par défaut" du graphique, tel qu'exporté ?
+DEFAUT = {}
+
+### Taille du graphique par défaut (pouces, en 80 points par pouce)
+DEFAUT["largeur"] = 10
+DEFAUT["hauteur"] = 7
+
# Nombre de lignes par défaut dans le formulaire
-nombre_lignes_form = 5
+DEFAUT["nb_data"] = 6
# couleurs par défaut
-couleur_defaut_1 = "#0000FF" # bleu
-couleur_defaut_2 = "#00FF00" # vert
-couleur_defaut_3 = "#FF0000" # rouge
-couleur_defaut_1_tuple = (0,0,1)
-couleur_defaut_2_tuple = (0,1,0)
-couleur_defaut_3_tuple = (1,0,0)
+DEFAUT["couleurs"] = {}
+DEFAUT["couleurs"]["courbe1"] = "#0000FF" # bleu
+DEFAUT["couleurs"]["courbe2"] = "#00FF00" # vert
+DEFAUT["couleurs"]["courbe3"] = "#FF0000" # rouge
+DEFAUT["couleurs"]["fond"]= "#FFFFFF" # blanc
+DEFAUT["couleurs"]["cadretxt"] = "#000000" # noir
+DEFAUT["couleurs"]["grille"] = "#7f7f7f" # gris
+#couleur_defaut_1 = "#0000FF" # bleu
+#couleur_defaut_2 = "#00FF00" # vert
+#couleur_defaut_3 = "#FF0000" # rouge
+CONFIG["couleurs"] = {
+ "courbe1" : (0,0,1),
+ "courbe2" : (0,1,0),
+ "courbe3" : (1,0,0),
+ "fond": (1,1,1),
+ "cadretxt": (0,0,0),
+ "grille": (0.5,0.5,0.5)
+ }
+#couleur_defaut_1_tuple = (0,0,1)
+#couleur_defaut_2_tuple = (0,1,0)
+#couleur_defaut_3_tuple = (1,0,0)
# couleurs par défaut fond
-couleur_defaut_fond = "#FFFFFF"
-couleur_defaut_fond_tuple = (1,1,1)
-couleur_defaut_cadretxt = "#000000"
-couleur_defaut_cadretxt_tuple = (0,0,0)
-couleur_defaut_grille = "#7f7f7f"
-couleur_defaut_grille_tuple = (0.5,0.5,0.5)
+#couleur_defaut_fond = "#FFFFFF"
+#couleur_defaut_fond_tuple = (1,1,1)
+#couleur_defaut_cadretxt = "#000000"
+#couleur_defaut_cadretxt_tuple = (0,0,0)
+#couleur_defaut_grille = "#7f7f7f"
+#couleur_defaut_grille_tuple = (0.5,0.5,0.5)
#couleur_defaut_erreur = (0,0,0) # noir
# initialiser la config
def config_init():
- return {"largeur": largeur_graphique,
- "hauteur": hauteur_graphique,
- "nb_data":nombre_lignes_form,
+ c = DEFAUT.copy()
+ c.update({
"age_0": "0j",
"legende": "oui",
"positionlegende": "hg",
- "couleur1": couleur_defaut_1,
- "couleur2": couleur_defaut_2,
- "couleur3": couleur_defaut_3,
- "couleur_fond": couleur_defaut_fond,
- "couleur_grille": couleur_defaut_grille,
- "couleur_cadretxt": couleur_defaut_cadretxt
- }
+# "couleur1": couleur_defaut_1,
+# "couleur2": couleur_defaut_2,
+# "couleur3": couleur_defaut_3,
+# "couleur_fond": couleur_defaut_fond,
+# "couleur_grille": couleur_defaut_grille,
+# "couleur_cadretxt": couleur_defaut_cadretxt
+ })
+
+ return c
def renvoie_liste_labels(conf,liste_data_choisie_p,liste_data_choisie_z,liste_err):
""" fabrique les deux listes de labels OMS"""
- #warning(str(liste_data_choisie_p),liste_err)
- liste_data_labels_p = [(nocol,affichepercentile(pc),degrade_choix(conf["couleur1"],conf["couleur2"],conf["couleur3"],pc)) for (nocol,pc) in liste_data_choisie_p]
- liste_data_labels_z = [(nocol,afficheecarttype(z),degrade_choix(conf["couleur1"],conf["couleur2"],conf["couleur3"],(z+3)/3*50) ) for (nocol,z) in liste_data_choisie_z]
+ #warning(str(conf),liste_err)
+ liste_data_labels_p = [(nocol,affichepercentile(pc),degrade_choix(conf["couleurs"]["courbe1"],conf["couleurs"]["courbe2"],conf["couleurs"]["courbe3"],pc)) for (nocol,pc) in liste_data_choisie_p]
+ liste_data_labels_z = [(nocol,afficheecarttype(z),degrade_choix(conf["couleurs"]["courbe1"],conf["couleurs"]["courbe2"],conf["couleurs"]["courbe3"],(z+3)/3*50) ) for (nocol,z) in liste_data_choisie_z]
return liste_data_labels_p,liste_data_labels_z
#liste_data_labels= liste_data_labels_z
import datetime
import json
import unidecode
+import copy
############ Fonctions de conversion
# dimensions du graphique
largeur = data.get("largeur","")
if largeur == "":
- largeur = largeur_graphique
+ largeur = DEFAUT["largeur_graphique"]
else:
try:
largeur = int(largeur)
except:
warning("La largeur "+largeur+"est invalide !",liste_err)
- largeur = largeur_graphique
+ largeur = DEFAUT["largeur_graphique"]
if largeur > largeur_graphique_max:
largeur = largeur_graphique_max
warning("Largeur trop grande !",liste_err)
hauteur = data.get("hauteur","")
if hauteur == "":
- hauteur = hauteur_graphique
+ hauteur = DEFAUT["hauteur_graphique"]
else:
try:
hauteur = int(hauteur)
except:
warning("La hauteur "+hauteur+"est invalide !",liste_err)
- hauteur = hauteur_graphique
+ hauteur = DEFAUT["hauteur_graphique"]
if hauteur > hauteur_graphique_max:
hauteur = hauteur_graphique_max
warning("Hauteur trop grande !",liste_err)
configuration["positionlegende"] = positionlegende
#warning("bla"+data["couleur1"],liste_err)
- coul1 = rgb_vers_tuple(data.get("couleur1",""),couleur_defaut_1_tuple,liste_err)
- coul2 = rgb_vers_tuple(data.get("couleur2",""),couleur_defaut_2_tuple,liste_err)
- coul3 = rgb_vers_tuple(data.get("couleur3",""),couleur_defaut_3_tuple,liste_err)
- #warning("bla2"+str(coul1),liste_err)
- configuration["couleur1"] = coul1
- configuration["couleur2"] = coul2
- configuration["couleur3"] = coul3
+# coul1 = rgb_vers_tuple(data.get("couleur1",""),couleur_defaut_1_tuple,liste_err)
+# coul2 = rgb_vers_tuple(data.get("couleur2",""),couleur_defaut_2_tuple,liste_err)
+# coul3 = rgb_vers_tuple(data.get("couleur3",""),couleur_defaut_3_tuple,liste_err)
+# #warning("bla2"+str(coul1),liste_err)
+# configuration["couleur1"] = coul1
+# configuration["couleur2"] = coul2
+# configuration["couleur3"] = coul3
- # couleur de fond
- coul_fond = rgb_vers_tuple(data.get("couleur_fond",""),couleur_defaut_fond_tuple,liste_err)
- configuration["couleur_fond"] = coul_fond
-
- # couleur d'axes et de texte
- coul_cadretxt = rgb_vers_tuple(data.get("couleur_cadretxt",""),couleur_defaut_cadretxt_tuple,liste_err)
- configuration["couleur_cadretxt"] = coul_cadretxt
+ configuration["couleurs"] = {}
+ # gérer les couleurs
+ #warning("data : "+str(data),liste_err)
+ for clecouleur in DEFAUT["couleurs"]:
+ coul = rgb_vers_tuple(data.get("couleur_"+clecouleur,""),CONFIG["couleurs"][clecouleur],liste_err)
+ configuration["couleurs"][clecouleur] = coul
- # couleur de la grille
- coul_grille = rgb_vers_tuple(data.get("couleur_grille",""),couleur_defaut_grille_tuple,liste_err)
- configuration["couleur_grille"] = coul_grille
+ #warning("config : "+str(configuration["couleurs"]),liste_err)
+ # couleur de fond
+# coul_fond = rgb_vers_tuple(data.get("couleur_fond",""),couleur_defaut_fond_tuple,liste_err)
+# configuration["couleur_fond"] = coul_fond
+#
+# # couleur d'axes et de texte
+# coul_cadretxt = rgb_vers_tuple(data.get("couleur_cadretxt",""),couleur_defaut_cadretxt_tuple,liste_err)
+# configuration["couleur_cadretxt"] = coul_cadretxt
+#
+# # couleur de la grille
+# coul_grille = rgb_vers_tuple(data.get("couleur_grille",""),couleur_defaut_grille_tuple,liste_err)
+# configuration["couleur_grille"] = coul_grille
#warning(str(configuration["couleur1"]),liste_err)
return configuration
def donnees_vers_json(l_jours,l_poids,config):
""" retourne le json à renvoyer"""
- gros_dico = config.copy()
+ gros_dico = copy.deepcopy(config)
l_jours2 = [convertit_age_vers_texte(d) for d in l_jours]
gros_dico["data_j"] = l_jours2
gros_dico["data_p"] = l_poids
# gérer l'age maxi
gros_dico["maxi"] = convertit_age_vers_texte(gros_dico["maxi"])
# gérer les couleurs
- for cle in ["couleur1", "couleur2", "couleur3", "couleur_fond","couleur_grille","couleur_cadretxt"]:
- gros_dico[cle] = tuple_vers_rgb(gros_dico[cle])
+# for cle in ["couleur1", "couleur2", "couleur3", "couleur_fond","couleur_grille","couleur_cadretxt"]:
+# gros_dico[cle] = tuple_vers_rgb(gros_dico[cle])
+ for clecouleur in DEFAUT["couleurs"]:
+ gros_dico["couleurs"][clecouleur] = tuple_vers_rgb(gros_dico["couleurs"][clecouleur])
valform["age_"+str(i)] = l_jours[i]
valform["poids_"+str(i)] = l_poids[i]
- valform["nb_data"] = max(long +2,nombre_lignes_form)
+ valform["nb_data"] = max(long +2,DEFAUT["nb_data"])
return valform
+++ /dev/null
-Copyright (c) 2020 Denise Maurice
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
<p>Ces données, ainsi que ce site web, sont sous licence <a href="https://creativecommons.org/licenses/by-nc-sa/3.0/igo/">CC BY-NC-SA 3.0 IGO</a></p>
-<p>Le code source (<a href="https://fr.wikipedia.org/wiki/Licence_MIT">licence MIT</a> sauf en ce qui concerne les données) est disponible là.</p>
+<p>Le code source (<a href="https://fr.wikipedia.org/wiki/Licence_MIT">licence MIT (licence X11)</a> sauf en ce qui concerne les données de l'OMS) est disponible <href="https://git.immae.eu/?p=perso/Denise/oms.git">là</href>.</p>
{% endblock %}
<hr>
<nav><a href="/">Accueil et saisie des données</a> |
- <a href="/apropos">À propos</a> |
<a href="/faq">FAQ</a> |
+ <a href="/contact">Contact</a> |
+ <a href="/apropos">À propos</a> |
<a href="/changelog">Changelog</a>
+
</nav>
</body>
--- /dev/null
+{% extends "base.html" %}
+{% block contenu %}
+<p>Si vous avez une question, un commentaire, une idée, vous pouvez me contacter à l'adresse suivante : </p>
+<p>Vous pouvez également me retrouver sur le <a href="https://forum.lllfrance.org/">forum LLL</a>, sous le nom de Sekhmet.</p>
+
+<p><strong>Merci</strong> à celles et ceux qui m'ont aidée à mettre en place cet outil :
+<ul>
+ <li>immae pour l'hébergement et l'aide technique,</li>
+ <li>cerise pour le coup de peinture sur la façade,</li>
+ <li>arcanmster pour le côté "je tape partout pour voir si ça casse",</li>
+ <li>les bêta-testeuses enthousiastes du forum LLL, entre autres MmeMarguerite, Maman-chat, bloom et Nerialka</li>
+</ul></p>
+
+{% endblock %}
<h3>Informations sur l'enfant</h3>
<ul>
<li><label>Nom de l'enfant :</label> <input type="text" name="nom" value="{{ valform.nom }}"></li>
-<li><label>Sexe :</label> <input type="radio" name="sexe" value="F" {%if valform.sexe == "F" %}checked{% endif %}> féminin
-| <input type="radio" name="sexe" value="M" {%if valform.sexe == "M"%} checked {% endif %}> masculin | <input type="radio" name="sexe" value="N" {%if valform.sexe == "N"%} checked {% endif %}> neutre (expérimental)</li>
+<li><label>Sexe :</label> <label><input type="radio" name="sexe" value="F" {%if valform.sexe == "F" %}checked{% endif %}> féminin </label>
+| <label><input type="radio" name="sexe" value="M" {%if valform.sexe == "M"%} checked {% endif %}> masculin</label> | <label><input type="radio" name="sexe" value="N" {%if valform.sexe == "N"%} checked {% endif %}> neutre (expérimental)</label></li>
<li><label>Date de naissance : </label> <input type="date" name="naissance" value="{{ valform.naissance }}"></li>
</ul>
<div class="bouton" onclick="affiche_cache('pref_graphique',this)">Afficher</div>
<ul id="pref_graphique">
- <li><label>Type de courbe :</label> <input type="radio" name="typecourbe" value="P"
- {% if valform.typecourbe == "P" or valform.typecourbe is not defined %} checked {% endif %}> Percentiles | <input type="radio" name="typecourbe" value="Z"
- {% if valform.typecourbe == "Z" %} checked {% endif %}> Moyenne et écarts-type</li>
- <li><label>Grille : </label><input type="checkbox" name="grille" {%if valform.grille == "oui" or valform.grille is not defined %} checked {% endif %}></li>
- <li><label>Unité : </label>
+ <li><label>Type de courbe :</label> <label><input type="radio" name="typecourbe" value="P"
+ {% if valform.typecourbe == "P" or valform.typecourbe is not defined %} checked {% endif %}> Percentiles</label> | <label><input type="radio" name="typecourbe" value="Z"
+ {% if valform.typecourbe == "Z" %} checked {% endif %}> Moyenne et écarts-type</label></li>
+ <li><label>Grille : <input type="checkbox" name="grille" {%if valform.grille == "oui" or valform.grille is not defined %} checked {% endif %}></label></li>
+ <li><label>Unité :
<select name="unite">
<option value="" {% if valform.typecourbe == "" or valform is not defined %} selected {%endif %}>Par défaut</option>
{% for unite in ['jours','semaines','mois','années'] %}
<option value="{{ unite }}"{% if valform.unite == unite %} selected {% endif %} >{{ unite }}</option>
{% endfor %}
- </select></li>
+ </select></label></li>
<li><label>valeur maximum du graphique (facultatif, syntaxe similaire à l'âge) </label><input type="text" name="maxi" value="{{ valform.maxi }}"></li>
<li>Dimensions du graphique : <label>largeur : </label><input type="text" name="largeur" value="{{ valform.largeur }}">
<label>hauteur : </label><input type="text" name="hauteur" value="{{ valform.hauteur }}"></li>
- <li><label>Légende : </label><input type="checkbox" name="legende" {% if valform.legende == 'oui' %} checked{% endif %}>
-Position : <select name="positionlegende">
+ <li><label>Légende : <input type="checkbox" name="legende" {% if valform.legende == 'oui' %} checked{% endif %}> </label>
+<label>Position : <select name="positionlegende">
{%for (pos,posnom) in [('upper left','Haut gauche'),('upper right','Haut Droite'),('lower left','Bas gauche'),('lower right','Bas droite')] %}
<option value="{{ pos }}">{{ posnom }}</option>
{% endfor %}
-</select>
+</select></label>
</li>
- <li>Couleur courbe du bas <input type="color" name="couleur1" value="{{ valform.couleur1 }}"> | Couleur courbe du milieu <input type="color" name="couleur2" value="{{ valform.couleur2 }}"> | Couleur courbe du haut <input type="color" name="couleur3" value="{{ valform.couleur3 }}"> </li>
- <li>Couleur du fond <input type="color" name="couleur_fond" value="{{ valform.couleur_fond }}"> | Couleur de la grille <input type="color" name="couleur_grille" value="{{ valform.couleur_grille }}"> | Couleur des axes, texte et courbe <input type="color" name="couleur_cadretxt" value="{{ valform.couleur_cadretxt }}"></li>
+ <li>Couleur courbe du bas <input type="color" name="couleur_courbe1" value="{{ valform.couleurs.courbe1 }}"> | Couleur courbe du milieu <input type="color" name="couleur_courbe2" value="{{ valform.couleurs.courbe2 }}"> | Couleur courbe du haut <input type="color" name="couleur_courbe3" value="{{ valform.couleurs.courbe3 }}"> </li>
+ <li>Couleur du fond <input type="color" name="couleur_fond" value="{{ valform.couleurs.fond }}"> | Couleur de la grille <input type="color" name="couleur_grille" value="{{ valform.couleurs.grille }}"> | Couleur des axes, texte et courbe <input type="color" name="couleur_cadretxt" value="{{ valform.couleurs.cadretxt }}"></li>
</ul>
import matplotlib.pyplot as plt
def cree_figure(conf,l_jours,l_poids,liste_err):
- #warning("debut de cree_figure",liste_err)
+ #warning("debut de cree_figure"+str(conf),liste_err)
try:
liste_data_labels_p,liste_data_labels_z = renvoie_liste_labels(conf,liste_data_choisie_p,liste_data_choisie_z,liste_err)
except:
#### La figure
- fig = plt.figure(num=None, figsize=(conf["largeur"], conf["hauteur"]), dpi=100, facecolor=conf["couleur_fond"])
- plt.rcParams['axes.facecolor'] = conf["couleur_fond"]
- plt.rcParams['axes.edgecolor']= conf["couleur_cadretxt"]
- plt.rcParams['xtick.color'] = conf["couleur_cadretxt"]
- plt.rcParams['ytick.color'] = conf["couleur_cadretxt"]
- plt.rcParams['grid.color'] = conf["couleur_grille"]
- plt.rcParams['legend.edgecolor'] = conf["couleur_grille"]
+ fig = plt.figure(num=None, figsize=(conf["largeur"], conf["hauteur"]), dpi=100, facecolor=conf["couleurs"]["fond"])
+ plt.rcParams['axes.facecolor'] = conf["couleurs"]["fond"]
+ plt.rcParams['axes.edgecolor']= conf["couleurs"]["cadretxt"]
+ plt.rcParams['xtick.color'] = conf["couleurs"]["cadretxt"]
+ plt.rcParams['ytick.color'] = conf["couleurs"]["cadretxt"]
+ plt.rcParams['grid.color'] = conf["couleurs"]["grille"]
+ plt.rcParams['legend.edgecolor'] = conf["couleurs"]["grille"]
#warning("bla"+str(liste_data_labels),liste_err)
for (i,label,couleur) in liste_data_labels:
if l_jours != []:
plt.plot(l_jours_conv,l_poids,label=conf["nom"],color=conf["couleur_cadretxt"],marker='o')
- plt.xlabel("Âge en "+conf["unite"],color=conf["couleur_cadretxt"])
- plt.ylabel("Poids en kg",color=conf["couleur_cadretxt"])
- plt.title(titre,color=conf["couleur_cadretxt"])
+ plt.xlabel("Âge en "+conf["unite"],color=conf["couleurs"]["cadretxt"])
+ plt.ylabel("Poids en kg",color=conf["couleurs"]["cadretxt"])
+ plt.title(titre,color=conf["couleurs"]["cadretxt"])
plt.axis([0,age_maxi,poids_min,poids_max])
if conf['legende']=="oui":
legende = plt.legend(loc=conf['positionlegende'])
- plt.setp(legende.get_texts(), color=conf["couleur_cadretxt"])
+ plt.setp(legende.get_texts(), color=conf["couleurs"]["cadretxt"])
plt.grid(conf["grille"]=="oui")
fig.tight_layout()