|
|
# Bienvenue sur le "Tutoriel collaboratif et évolutif PYTHON "
|
|
|
|
|
|
(:warning: site en évolution ! 🚧 👷
|
|
|
:construction_site: chantier actuel = [gestion des événements, Atelier_clics](Atelier_clics), et ajouts d'illustrations )
|
|
|
(⚠ site en évolution ! 🚧 👷 🏗 chantier actuel = [gestion des événements, Atelier_clics](Atelier_clics), et ajouts d'illustrations )
|
|
|
|
|
|
pour l'instant l'essentiel du contenu porte sur Matplotlib, avec un **"Atelier Matplotlib"** en plusieurs parties, dont un point sur les bases de Python nécessaires.
|
|
|
Des pages plus généralistes seront ajoutées au fur et à mesure (modules et gestion des versions, environnement virtuel...) avec des liens vers des sites utiles et des compléments.
|
|
|
pour l'instant l'essentiel du contenu porte sur Matplotlib, avec un **"Atelier Matplotlib"** en plusieurs parties, dont un point sur les bases de Python nécessaires. Des pages plus généralistes seront ajoutées au fur et à mesure (modules et gestion des versions, environnement virtuel...) avec des liens vers des sites utiles et des compléments.
|
|
|
|
|
|
<figure><img src="uploads/f26fc46a5c4bc9f072820291a73d1cbd/Figure_3_graphique_PTQ_subplots_avec-legende.png" width="360" {: .shadow} ></figure>
|
|
|
<i>exemple de résolution d'un problème récurrent : un graphique avec courbes et deux axes des y, jumelé avec un autre ; légende commune à toute la figure et légende "customisée" ; figure tracée avec le code [Atelier_MatPlotLib_2021_part1](https://gitlab.irstea.fr/christine.poulard/atelier-matplotlib/-/blob/master/Atelier_MatPlotLib_2021_part1.py)</i>
|
|
|
![](uploads/f26fc46a5c4bc9f072820291a73d1cbd/Figure_3_graphique_PTQ_subplots_avec-legende.png)
|
|
|
|
|
|
_exemple de résolution d'un problème récurrent : un graphique avec courbes et deux axes des y, jumelé avec un autre ; légende commune à toute la figure et légende "customisée" ; figure tracée avec le code_ [_Atelier_MatPlotLib_2021_part1_](https://gitlab.irstea.fr/christine.poulard/atelier-matplotlib/-/blob/master/Atelier_MatPlotLib_2021_part1.py)
|
|
|
|
|
|
## Dans cette page d'accueil :
|
|
|
|
|
|
- pourquoi Matplotlib: c'est la bibliothèque "historique" de Python, riche d'une forte communauté et de très bon "wrappers" (seaborn), même si d'autres modules sont prometteurs pour des usages spécifiques
|
|
|
- le principe de l'Atelier 2021, et ses documents
|
|
|
- ateliers disponibles : points traités et exemple de sortie
|
|
|
|
|
|
:construction_site: à venir : pour mieux cibler les pages correspondant à un besoin, une 'galerie' pour voir les graphiques proposés, avec les mots-clefs associés.
|
|
|
|
|
|
* pourquoi Matplotlib: c'est la bibliothèque "historique" de Python, riche d'une forte communauté et de très bon "wrappers" (seaborn), même si d'autres modules sont prometteurs pour des usages spécifiques
|
|
|
* le principe de l'Atelier 2021, et ses documents
|
|
|
* ateliers disponibles : points traités et exemple de sortie
|
|
|
|
|
|
🏗 à venir : pour mieux cibler les pages correspondant à un besoin, une 'galerie' pour voir les graphiques proposés, avec les mots-clefs associés.
|
|
|
|
|
|
### pourquoi Matplotlib, la bibliothèque "historique" de Python
|
|
|
|
|
|
Matplotlib n'est pas la seule bibliothèque graphique de Python, mais c'est sans doute la plus utilisée, donc avec une grande communauté, et elle est 100% Python (plein accès au code). Elle a une [**documentation complète, structurée et et tenue à jour**](https://matplotlib.org/), qu'il faut consulter en priorité ; elle manque parfois d'exemples d'utilisation, il faut alors chercher des explications et des illustrations ailleurs, [dans des cours, des tutos](Tutographie) ou des forums.
|
|
|
Pour des données multimensionnelles, vous utiliserez peut-être Seaborn, et pour réaliser des cartes en tenant compte des systèmes de projection il y a Geopandas et Cartopy : tous sont des "wrappers" de Matplotlib, c'est-à-dire des interfaces qui proposent des syntaxes pratiques et se chargent de les transcrire en instructions matplotib. Il est donc intéressant de connaître matplotlib pour ajuster des graphiques faits avec tous les wrappers. Elle reste une bonne bibliothèque pour prendre pied dans les visualisation.
|
|
|
NB : comme matplotlib est utilisé comme base pour le "méta-package" Plots\* en Julia le temps d'apprentissage n'est pas perdu même si vous passez à Julia (éventuellement, ce wiki sera élargi à Julia, un jour...).
|
|
|
Matplotlib n'est pas la seule bibliothèque graphique de Python, mais c'est sans doute la plus utilisée, donc avec une grande communauté, et elle est 100% Python (plein accès au code). Elle a une [**documentation complète, structurée et et tenue à jour**](https://matplotlib.org/), qu'il faut consulter en priorité ; elle manque parfois d'exemples d'utilisation, il faut alors chercher des explications et des illustrations ailleurs, [dans des cours, des tutos](Tutographie) ou des forums. Pour des données multimensionnelles, vous utiliserez peut-être Seaborn, et pour réaliser des cartes en tenant compte des systèmes de projection il y a Geopandas et Cartopy : tous sont des "wrappers" de Matplotlib, c'est-à-dire des interfaces qui proposent des syntaxes pratiques et se chargent de les transcrire en instructions matplotib. Il est donc intéressant de connaître matplotlib pour ajuster des graphiques faits avec tous les wrappers. Elle reste une bonne bibliothèque pour prendre pied dans les visualisation. NB : comme matplotlib est utilisé comme base pour le "méta-package" Plots\* en Julia le temps d'apprentissage n'est pas perdu même si vous passez à Julia (éventuellement, ce wiki sera élargi à Julia, un jour...).
|
|
|
|
|
|
Il existe maintenant des alternatives plus rapides, plus spécialisées, qui sont meilleures au niveau de l'interactivité et de la réactivité (animations, mise à jour en continu...), mais elles ne sont pas aussi complètes, et ne bénéficient pas de la même communauté de développeurs et d'utilisateurs que Matplotlib. Par ailleurs, Matplotlib continue aussi à évoluer.
|
|
|
|
... | ... | @@ -34,24 +28,18 @@ Pour des données multimensionnelles, on citera _Altair_, basé sur le D3js. Bok |
|
|
|
|
|
Il serait intéressant de faire par la suite un fork de cet atelier avec Plotly ou Bokeh ou PyQtGraph... ou le projet [vispy](https://vispy.org/) (à ne pas confondre avec Pyviz...) basé sur l'openGL qui regroupera des éléments de plusieurs modules (PyQTGraph, glumpy...) mais il est encore en développement.
|
|
|
|
|
|
|
|
|
|
|
|
## "Atelier Python Matplotlib 2021"
|
|
|
|
|
|
### alternance de pratique et de théorie à suivre lors de sessions encadrées ou en autonomie
|
|
|
|
|
|
**En complément à la doc et aux nombreux tutos** dont certains sont excellents (voir [onglet "tutographie"](Tutographie)) il s'agit ici de découvrir matplotlib au travers d'applications de nos équipes (actuellement : chroniques de valeurs, champs de valeurs...). On insistera sur les points qui ont posé des difficultés, même si éventuellement cela ne semblait pas être du tout quelque chose de difficile (maintenir les étiquettes de dates de l'axe des x lisibles quel que soit le zoom ; construire une légende qui ne masque pas les courbes, et qui soit complète même avec des variables de natures différentes tracées avec un autre axe des y ou dans des vignettes différentes...).
|
|
|
|
|
|
Ce wiki est en évolution, des illustrations sont ajoutées au fur et à mesure. A venir aussi : une "galerie" permettant d'aller voir les réalisations des uns et des autres pour y piocher des idées et des solutions.
|
|
|
Ce wiki est en évolution, des illustrations sont ajoutées au fur et à mesure. A venir aussi : une "galerie" permettant d'aller voir les réalisations des uns et des autres pour y piocher des idées et des solutions.
|
|
|
|
|
|
N'hésitez pas à faire part de vos questions, remarques et suggestions aux auteurs, _contributions bienvenues_ également.
|
|
|
|
|
|
|
|
|
![](/illustrations/Figure_3_graphique_PTQ_subplots.png) _
|
|
|
graphiques simples, puis chroniques, puis plusieurs axes des y_
|
|
|
![](/images/DixAnsAvecCentennaleEtQuinquennale.png) _légende customisée, interactions avec sliders ; ajout d'outils à la barre d'outils_ ![](/illustrations/carte.png) _carte à partir d'une matrice et de shapes, colorbar customisée_
|
|
|
![](/illustrations/InterfaceCourbeDeRemous.png) _coloration d'une zone avec fill_between, interactions avec sliders_ ![](illustrations/selection_picker.png) _sélection d'un point au clic de souris, calcul distances écran, annotations_ ![](illustrations/PresentationVisuSerieDynamique.png) _prétraitement (adaptation de la résolution) et surcharge du zoom_
|
|
|
|
|
|
![](/illustrations/Figure_3_graphique_PTQ_subplots.png) _ graphiques simples, puis chroniques, puis plusieurs axes des y_ ![](/images/DixAnsAvecCentennaleEtQuinquennale.png) _légende customisée, interactions avec sliders ; ajout d'outils à la barre d'outils_ ![](/illustrations/carte.png) _carte à partir d'une matrice et de shapes, colorbar customisée_\
|
|
|
![](/illustrations/InterfaceCourbeDeRemous.png) _coloration d'une zone avec fill_between, interactions avec sliders_ ![](illustrations/selection_picker.png) _sélection d'un point au clic de souris, calcul distances écran, annotations_ ![](illustrations/PresentationVisuSerieDynamique.png) _prétraitement (adaptation de la résolution) et surcharge du zoom_
|
|
|
|
|
|
#### Prérequis
|
|
|
|
... | ... | @@ -81,23 +69,28 @@ Enfin, les sites de référence qui expliquent non seulement comment, mais surto |
|
|
|
|
|
### [Instructions de base ; manipulation dans la console](A_%20quelques%20bases)
|
|
|
|
|
|
|
|
|
|
|
|
## Plan de l'atelier 2021
|
|
|
|
|
|
La numérotation est critiquable et sera sans doute revue; la logique était d'aller du plus simple au plus compliqué... sauf que cela devient faux dès que l'on rajoute un exemple.
|
|
|
|
|
|
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) | Définitions d'une figure, d'un axe ; |
|
|
|
| [B1) Un premier graphe très simple](/christine.poulard/atelier-matplotlib/-/wikis/AtelierB1_Graphiques_simples) | | |
|
|
|
| [B2) lire un fichier texte et extraire l'information](/christine.poulard/atelier-matplotlib/-/wikis/Atelier1_2) | | |
|
|
|
| [C) Atelier 2 : un graphique avec un 2e axe des y ; les objets d'une figure](/christine.poulard/atelier-matplotlib/-/wikis/AtelierC) | | |
|
|
|
| [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 | | |
|
|
|
|
|
|
### B) Atelier 1 : Un premier graphique, avec un axe des x et un axe des y
|
|
|
###
|
|
|
|
|
|
#### [B1) Un premier graphe très simple](AtelierB1_Graphiques_simples)
|
|
|
####
|
|
|
|
|
|
#### [B2) lire un fichier texte et extraire l'information](Atelier1_2)
|
|
|
####
|
|
|
|
|
|
### [C) Atelier 2 : un graphique avec un 2e axe des y ; les objets d'une figure](AtelierC)
|
|
|
###
|
|
|
|
|
|
### [D) Atelier 3 : pour changer, une carte ('heatmap') à partir d'une matrice, avec sa colormap](Atelier_D_carte) ; avec quelques imports/exports entre mpl et QGis
|
|
|
###
|
|
|
|
|
|
### [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
|
|
|
|
... | ... | @@ -109,7 +102,6 @@ Les exemples suivants sont tirés de nos activités (chroniques de valeurs, cham |
|
|
|
|
|
### [G) Atelier 6 : les widgets de matplotlib : slider et checkbutton](Atelier_G_widgets) : les widgets sur un exemple beaucoup plus simple que le F ; malgré leurs défauts, ces widgets peuvent rendre service pour pouvoir interagir avec une figure sans sortir l'artillerie (tkinter, pyQT...)
|
|
|
|
|
|
|
|
|
### [Layout = Disposition de vignettes dans une figure : subplots et gridspecs](https://gitlab.irstea.fr/christine.poulard/atelier-matplotlib/-/wikis/Point-Th%C3%A9orie-:-Subplots)
|
|
|
|
|
|
### A venir : [Galerie](galerie_mpl_hypopo), [(dys)Lexique](Lexique), futurs ateliers, tuto plus complet...
|
... | ... | |