... | @@ -45,6 +45,10 @@ Il serait intéressant de faire par la suite un fork de cet atelier avec Plotly |
... | @@ -45,6 +45,10 @@ Il serait intéressant de faire par la suite un fork de cet atelier avec Plotly |
|
|
|
|
|
**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...).
|
|
**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...).
|
|
|
|
|
|
|
|
Certaines pages présentent des "Ateliers" avec une démarche qui part d'un cas simple et ajoute des difficultés une à une ; il sont référencés par des lettres. D'autres font le point sur une difficulté précise, pour garder une trace de tests effectués pour de "vrais" codes ; c'est le cas de l'[Atelier "clic"](Atelier_clics) et de l'[addendum à l'atelier Carte, avec le cas des zooms](Cartes : focus sur les "zooms").
|
|
|
|
Pour que ces pages soient utilisables facilement, il faudrait un lexique des notions abordées ; en attendant, vous trouverez en en-tête des pages une liste des notions principales et secondaires.
|
|
|
|
|
|
|
|
|
|
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.
|
|
N'hésitez pas à faire part de vos questions, remarques et suggestions aux auteurs, _contributions bienvenues_ également.
|
... | @@ -87,17 +91,14 @@ Les exemples suivants sont tirés de nos activités (chroniques de valeurs, cham |
... | @@ -87,17 +91,14 @@ Les exemples suivants sont tirés de nos activités (chroniques de valeurs, cham |
|
| [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...)|
|
|
| [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)|
|
|
| [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). |
|
|
| [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 |
|
|
| [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"](Cartes : focus sur les "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é) |
|
|
| [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** | |
|
|
| **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|
|
|
| [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 |
|
|
| [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 |
|
|
| [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 |
|
|
|
|
|
|
## Des petits tests utilisés dans les ateliers principaux, présentés ici à l'échelle de la notion
|
|
|
|
|
|
|
|
Les surprises des axes avec valeurs négatives : quand les méthodes set_xlim et set_ylim ne se passent pas comme prévu !
|
|
|
|
[exemples avec un y à valeurs négatives](Y avec valeurs négatives)
|
|
|
|
|
|
|
|
##Points théorie
|
|
##Points théorie
|
|
|
|
|
... | | ... | |