Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Register
  • Sign in
  • PYTHON - Atelier MatPlotLib PYTHON - Atelier MatPlotLib
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Terraform modules
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar

La forge institutionnelle d'INRAE étant en production depuis le 10 juin 2025, nous vous invitons à y créer vos nouveaux projets.

  • Poulard Christine
  • PYTHON - Atelier MatPlotLibPYTHON - Atelier MatPlotLib
  • Wiki
  • Home

Home · Changes

Page history
Update home authored Mar 21, 2022 by Poulard Christine's avatar Poulard Christine
Show whitespace changes
Inline Side-by-side
home.md
View page @ cc1e83e5
......@@ -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 | ![AtelierB1_PremiereFigure](uploads/4814f2260d6243b457d1c05706167d44/AtelierB1_PremiereFigure.png) | _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 | ![Fig1_graphique_basique2](uploads/b8cbe463f1de72fce4a7825e44704559/Fig1_graphique_basique2.png) | 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) | ![FigureB2_feuilledestyle](uploads/5315b3712be9191c3d5c28498618cdf3/FigureB2_feuilledestyle.PNG) | 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. | ![Figure_3_graphique_PTQ_subplots](uploads/31dcb119ac7b2e3521a9a7b831010756/Figure_3_graphique_PTQ_subplots.png) | 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 | ![carte](uploads/3495d20090b9fa6f99526442c859cf9b/carte.png) | 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 | ![selection_point_mouseclick_2courbes](uploads/197d80a53567be4fb1ec3f375240f1ad/selection_point_mouseclick_2courbes.png) | é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 | ![PresentationVisuSerieDynamique](uploads/bfd9cfbd308afc6ff7455467f650ab64/PresentationVisuSerieDynamique.png) | 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 ; | ![AtelierG_widgetsEtBoutonsToolbar](uploads/9b805cf3cb4d2d384c7f07b7e19270f1/AtelierG_widgetsEtBoutonsToolbar.png) | 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 | ![seaborn](uploads/c563f1ad5b213f49932b80d747208d6b/seaborn.png) | petite initiation en cheminant avec le Mooc MachineLearning [premiers pas dans seaborn](focus%20seaborn) |
| animations (pas encore fait !) | ![sinus](uploads/6b255e402801141e260dd0b2c479a2eb/sinus.gif) | 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>
![AtelierB1_PremiereFigure](uploads/4814f2260d6243b457d1c05706167d44/AtelierB1_PremiereFigure.png)
</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>
![Fig1_graphique_basique2](uploads/b8cbe463f1de72fce4a7825e44704559/Fig1_graphique_basique2.png)
</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>
![FigureB2_feuilledestyle](uploads/5315b3712be9191c3d5c28498618cdf3/FigureB2_feuilledestyle.PNG)
</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>
![Figure_3_graphique_PTQ_subplots](uploads/31dcb119ac7b2e3521a9a7b831010756/Figure_3_graphique_PTQ_subplots.png)
</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>
![carte](uploads/3495d20090b9fa6f99526442c859cf9b/carte.png)
</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>
![selection_point_mouseclick_2courbes](uploads/197d80a53567be4fb1ec3f375240f1ad/selection_point_mouseclick_2courbes.png)
</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>
![PresentationVisuSerieDynamique](uploads/bfd9cfbd308afc6ff7455467f650ab64/PresentationVisuSerieDynamique.png)
</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>
![AtelierG_widgetsEtBoutonsToolbar](uploads/9b805cf3cb4d2d384c7f07b7e19270f1/AtelierG_widgetsEtBoutonsToolbar.png)
</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>
![Section95_Z311](uploads/abe6438f0e6e81a3cae3e7e0ed57c953/Section95_Z311.png)
</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>
![seaborn](uploads/c563f1ad5b213f49932b80d747208d6b/seaborn.png)
</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>
![sinus](uploads/6b255e402801141e260dd0b2c479a2eb/sinus.gif)
</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
......
Clone repository
  • AtelierB1_Graphiques_simples
  • AtelierB2_Lire_un_fichier
  • AtelierC
  • Atelier_D_carte
  • Atelier_D_carte_a_partir_de_fichiers_binaires
  • Atelier_E_longues_series
  • Atelier_G_widgets
  • Atelier_clic_afficher
  • Atelier_clics
  • Cartes focus sur le redimensionnement
  • GUI avec QT
  • La doc avec Sphinx
  • Lexique
  • Point Théorie Subplots
  • Pour les contributeurs
View All Pages