|
|
# Bienvenue sur le "Tutoriel collaboratif et évolutif PYTHON "
|
|
|
# Bienvenue sur le "Tutoriel collaboratif et évolutif PYTHON "
|
|
|
|
|
|
(:warning: site en évolution ! :construction: :construction_worker: :construction_site: chantier actuel = ajouts d'illustrations ; gestion des versions) _Pour améliorer la rédaction et alimenter cette ressource, toute contribution sera la bienvenue : remarque, info complémentaire, exemple de graphique (éventuellement à construire)..._
|
|
|
|
... | ... | @@ -90,22 +90,173 @@ La numérotation est critiquable et sera sans doute revue; la logique était d'a |
|
|
### Les ateliers
|
|
|
|
|
|
Les exemples suivants sont tirés de nos activités (chroniques de valeurs, champs de valeurs...).
|
|
|
| Atelier | Exemple | Notions centrales & additionnelles |
|
|
|
|---------|---------|------------------------------------|
|
|
|
| B) Atelier 1 : Un premier graphique, avec un axe des x et un axe des y |  | _voir repl en ligne_ <https://replit.com/@CPoulard/> , "Plotting long time-series" |
|
|
|
| [B1) Un premier graphe très simple](/christine.poulard/atelier-matplotlib/-/wikis/AtelierB1_Graphiques_simples) entrée en matière |  | syntaxe simple avec "plt" : plt.plot(), plt.xlabel(), plt(ylim), plt.title... ; arguments label, lw, marker='\*', color, ls, fontsize...) |
|
|
|
| [B2) lire un fichier texte et extraire l'information (="parser")](/christine.poulard/atelier-matplotlib/-/wikis/Atelier1_2) |  | modules pathlib et datetime ; tkinter.askopenfilename() ; Path.is_file() ; with open(nom_fichier, 'r') as fichier ; fichier.readline() ; chaine.split(); dictionnaires dict(), clé et valeurs ; feuilles de style (via rc_params) |
|
|
|
| [C) Atelier 2 : un graphique avec un 2e axe des y ; les objets d'une figure](/christine.poulard/atelier-matplotlib/-/wikis/AtelierC) : représenter des variables de nature différente. Problème : créer une 2e courbe avec un 2e axe des y ; partager un même axe des x sur deux vignettes différentes, obtenir une légende avec toutes les variables. |  | Définitions "objet" de Figure et Axes ; ax2= ax1.twinx() pour créer une vignette partageant le même axe des x ; créer et organiser plusieurs vignettes selon une grille avec subplots, arguments nrows et ncols ; sharex=True pour jumeler des vignettes. Différence entre légende d'Axes et de Figure. Créer une légende de toutes pièces (voir illustration en tête de page). |
|
|
|
| [D) Atelier 3 : pour changer, une carte ('heatmap') à partir d'une matrice, avec sa colormap](/christine.poulard/atelier-matplotlib/-/wikis/Atelier_D_carte) ; avec quelques imports/exports entre mpl et QGis |  | lecture et tracé des shapes (ici, sans geopandas) ; représentation d'une matrice avec imshow; notion de colormap ; customisation d'une colorbar discrète par une liste de couleurs ou par discrétisation d'une colormap continue ; page spéciale "zooms" |
|
|
|
| [E) Atelier 4 : on revient au traitement de chroniques, dans le cas de longues séries](Atelier_E_longues_series) : amélioration de l'affichage des étiquettes de date sans pandas ; on pourra travailler avec le fichier de l'atelier 1 et/ou un fichier binaire | | problèmes spécifiques des longues séries (cette section sera étoffée si besoin exprimé) |
|
|
|
| **NIVEAU AVANCE** | **interactions : événements et WIDGETS** | |
|
|
|
| [Atelier événement : notion d'événement, de callback ; mise à jour d'un graphique ](Atelier_clics): exemple d'un "clic sur un graphique" qui va donner des infos sur le point le plus proche |  | événement, liaison événement fonction ; exemples de MouseEvent et PickEvent ; identification du point le plus proche par distances "en unités du graphiques" et "en unité écran" ; widget Textbox |
|
|
|
| [F) Atelier 5 : widgets et prétraitement de longues chroniques avant visualisation ](Atelier_F_pretraitement): adaptation de la résolution |  | pandas et rééchantillonnage, surcharge des outils de la barre d'outils |
|
|
|
| [G) Atelier 6 : les widgets de matplotlib : slider et checkbutton](Atelier_G_widgets) : plusieurs exemples de difficulté croissante mais plus simple que le F ; |  | widgets "moins bien que ceux de Tkinter mais pouvant rendre service, modification des objets de matpotlib, ajout d'outils à la barre d'outils |
|
|
|
| **TODO LIST ?** | **selon besoins exprimés** | |
|
|
|
| utilisation de fillbetween pour calculs géométriques | tests réalisés dans ST2shape, dans la cadre du développement d'une alternative à l'interface Pamhyr en Python | |
|
|
|
| ggplots, grammar of graphics |  | petite initiation en cheminant avec le Mooc MachineLearning [premiers pas dans seaborn](focus%20seaborn) |
|
|
|
| animations (pas encore fait !) |  | mpl permet de générer des animations (animate) mais ici on triche avec un exemple en Julia (avec @gif, tuto M. Herbst) |
|
|
|
|
|
|
<table>
|
|
|
<tr>
|
|
|
<th>Atelier</th>
|
|
|
<th>Exemple</th>
|
|
|
<th>Notions centrales & additionnelles</th>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td>B) Atelier 1 : Un premier graphique, avec un axe des x et un axe des y</td>
|
|
|
<td>
|
|
|
|
|
|

|
|
|
</td>
|
|
|
<td>
|
|
|
|
|
|
_voir repl en ligne_ <https://replit.com/@CPoulard/> , "Plotting long time-series"
|
|
|
</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td>
|
|
|
|
|
|
[B1) Un premier graphe très simple](/christine.poulard/atelier-matplotlib/-/wikis/AtelierB1_Graphiques_simples) entrée en matière
|
|
|
</td>
|
|
|
<td>
|
|
|
|
|
|

|
|
|
</td>
|
|
|
<td>syntaxe simple avec "plt" : plt.plot(), plt.xlabel(), plt(ylim), plt.title... ; arguments label, lw, marker='\*', color, ls, fontsize...)</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td>
|
|
|
|
|
|
[B2) lire un fichier texte et extraire l'information (="parser")](/christine.poulard/atelier-matplotlib/-/wikis/Atelier1_2)
|
|
|
</td>
|
|
|
<td>
|
|
|
|
|
|

|
|
|
</td>
|
|
|
<td>modules pathlib et datetime ; tkinter.askopenfilename() ; Path.is_file() ; with open(nom_fichier, 'r') as fichier ; fichier.readline() ; chaine.split(); dictionnaires dict(), clé et valeurs ; feuilles de style (via rc_params)</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td>
|
|
|
|
|
|
[C) Atelier 2 : un graphique avec un 2e axe des y ; les objets d'une figure](/christine.poulard/atelier-matplotlib/-/wikis/AtelierC) : représenter des variables de nature différente. Problème : créer une 2e courbe avec un 2e axe des y ; partager un même axe des x sur deux vignettes différentes, obtenir une légende avec toutes les variables.
|
|
|
</td>
|
|
|
<td>
|
|
|
|
|
|

|
|
|
</td>
|
|
|
<td>Définitions "objet" de Figure et Axes ; ax2= ax1.twinx() pour créer une vignette partageant le même axe des x ; créer et organiser plusieurs vignettes selon une grille avec subplots, arguments nrows et ncols ; sharex=True pour jumeler des vignettes. Différence entre légende d'Axes et de Figure. Créer une légende de toutes pièces (voir illustration en tête de page).</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td>
|
|
|
|
|
|
[D) Atelier 3 : pour changer, une carte ('heatmap') à partir d'une matrice, avec sa colormap](/christine.poulard/atelier-matplotlib/-/wikis/Atelier_D_carte) ; avec quelques imports/exports entre mpl et QGis
|
|
|
</td>
|
|
|
<td>
|
|
|
|
|
|

|
|
|
</td>
|
|
|
<td>lecture et tracé des shapes (ici, sans geopandas) ; représentation d'une matrice avec imshow; notion de colormap ; customisation d'une colorbar discrète par une liste de couleurs ou par discrétisation d'une colormap continue ; page spéciale "zooms"</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td>
|
|
|
|
|
|
[E) Atelier 4 : on revient au traitement de chroniques, dans le cas de longues séries](Atelier_E_longues_series) : amélioration de l'affichage des étiquettes de date sans pandas ; on pourra travailler avec le fichier de l'atelier 1 et/ou un fichier binaire
|
|
|
</td>
|
|
|
<td>
|
|
|
|
|
|
</td>
|
|
|
<td>problèmes spécifiques des longues séries (cette section sera étoffée si besoin exprimé)</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td>
|
|
|
|
|
|
**NIVEAU AVANCE**
|
|
|
</td>
|
|
|
<td>
|
|
|
|
|
|
**interactions : événements et WIDGETS**
|
|
|
</td>
|
|
|
<td>
|
|
|
|
|
|
</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td>
|
|
|
|
|
|
[Atelier événement : notion d'événement, de callback ; mise à jour d'un graphique ](Atelier_clics): exemple d'un "clic sur un graphique" qui va donner des infos sur le point le plus proche
|
|
|
</td>
|
|
|
<td>
|
|
|
|
|
|

|
|
|
</td>
|
|
|
<td>événement, liaison événement fonction ; exemples de MouseEvent et PickEvent ; identification du point le plus proche par distances "en unités du graphiques" et "en unité écran" ; widget Textbox</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td>
|
|
|
|
|
|
[F) Atelier 5 : widgets et prétraitement de longues chroniques avant visualisation ](Atelier_F_pretraitement): adaptation de la résolution
|
|
|
</td>
|
|
|
<td>
|
|
|
|
|
|

|
|
|
</td>
|
|
|
<td>pandas et rééchantillonnage, surcharge des outils de la barre d'outils</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td>
|
|
|
|
|
|
[G) Atelier 6 : les widgets de matplotlib : slider et checkbutton](Atelier_G_widgets) : plusieurs exemples de difficulté croissante mais plus simple que le F ;
|
|
|
</td>
|
|
|
<td>
|
|
|
|
|
|

|
|
|
</td>
|
|
|
<td>widgets "moins bien que ceux de Tkinter mais pouvant rendre service, modification des objets de matpotlib, ajout d'outils à la barre d'outils</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td>
|
|
|
|
|
|
**TODO LIST ?**
|
|
|
</td>
|
|
|
<td>
|
|
|
|
|
|
**selon besoins exprimés**
|
|
|
</td>
|
|
|
<td>
|
|
|
|
|
|
</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td>
|
|
|
|
|
|
utilisation d'objets créés par matplotlib pour calculs géométriques (ici, attributs aire et périmètre de polygones)
|
|
|
</td>
|
|
|
<td>
|
|
|
|
|
|

|
|
|
</td>
|
|
|
<td>
|
|
|
|
|
|
code inclus dans ST2shape, pour test au service de l'interface Pamhyr en Python :
|
|
|
|
|
|
polygone_zone_en_eau = ax_st.fill_between(x_section, y1=z_eau, y2=z_section, where=z_eau>z_section, interpolate=True)
|
|
|
</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td>ggplots, grammar of graphics</td>
|
|
|
<td>
|
|
|
|
|
|

|
|
|
</td>
|
|
|
<td>
|
|
|
|
|
|
petite initiation en cheminant avec le Mooc MachineLearning [premiers pas dans seaborn](focus%20seaborn)
|
|
|
</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td>animations (pas encore fait !)</td>
|
|
|
<td>
|
|
|
|
|
|

|
|
|
</td>
|
|
|
<td>mpl permet de générer des animations (animate) mais ici on triche avec un exemple en Julia (avec @gif, tuto M. Herbst)</td>
|
|
|
</tr>
|
|
|
</table>
|
|
|
|
|
|
### Points "théorie" spécifique matplotlib
|
|
|
|
... | ... | |