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 recommandons d'y créer tous vos nouveaux projets.

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

AtelierC · Changes

Page history
Update AtelierC authored Mar 16, 2021 by Poulard Christine's avatar Poulard Christine
Show whitespace changes
Inline Side-by-side
AtelierC.md
View page @ d57d4a18
...@@ -29,7 +29,7 @@ Dans un premier temps, on va profiter de la bibliothèque pandas, qui crée et t ...@@ -29,7 +29,7 @@ Dans un premier temps, on va profiter de la bibliothèque pandas, qui crée et t
``` python ``` python
import pandas as pd import pandas as pd
``` ```
On vous a donné du code déjà écrit, donnees_TD_ETP_csv_panda_seul ; vous pouvez sans doute l'améliorer. On vous a donné du code déjà écrit, **donnees_TD_ETP_csv_panda_seul** ; vous pouvez sans doute l'améliorer.
On va s'appuyer sur la méthode read_csv pour lire le fichier et le mettre sous forme de tableau (DataFrame). On va s'appuyer sur la méthode read_csv pour lire le fichier et le mettre sous forme de tableau (DataFrame).
Il devrait être possible de tout récupérer au format voulu en une seule opération, mais ici on a dû écrire quelques étapes. Il devrait être possible de tout récupérer au format voulu en une seule opération, mais ici on a dû écrire quelques étapes.
On utilise des instructions comme "print" pour vérifier que l'on a bien lu correctement, et header pour jeter un oeil aux premières lignes du DF. On utilise des instructions comme "print" pour vérifier que l'on a bien lu correctement, et header pour jeter un oeil aux premières lignes du DF.
...@@ -52,8 +52,10 @@ La mauvaise nouvelle : les trois variables, qui s'expriment dans des unités dif ...@@ -52,8 +52,10 @@ La mauvaise nouvelle : les trois variables, qui s'expriment dans des unités dif
### C3) Mise en forme des données : une figure avec deux vignettes, dont une avec deux axes des y. ### C3) Mise en forme des données : une figure avec deux vignettes, dont une avec deux axes des y.
On vous a donné du code déjà écrit, comme ce que vous pourriez trouver en ligne. Vous pouvez partir de la fonction précédente ou de **donnees_TD_ETP_2subplots** déjà écrit; dans le développement on trouve souvent en ligne des bouts de code qu'il faut s'approprier et adapter.
Ca marche, même si c'est plutôt moche, donc n'hésitez pas à mettre en forme pour vous exercer. Cette fonction reprend le début de la fonction précédente (lecture avec pd.read_csv), on trace aussi avec la méthode pd plot pour vérifier que la lecture s'est bien passée (phase que l'on peut ensuite mettre en commentaire).
Ensuite on a du code spécifique.
Si vous l'exécutez, vous verrez que ça marche, le rendu n'est pas forcément à votre goût, donc ce sera l'occasion de vous exercer à mettre en forme. On proposera par la suite une variante, vous pourrez donc étoffer votre palette.
[Figure mise en forme, chaque variable a son axe](https://gitlab.irstea.fr/christine.poulard/atelier-matplotlib/-/blob/master/illustrations/Figure_3_graphique_PTQ_subplots.png) [Figure mise en forme, chaque variable a son axe](https://gitlab.irstea.fr/christine.poulard/atelier-matplotlib/-/blob/master/illustrations/Figure_3_graphique_PTQ_subplots.png)
De prime abord, certaines syntaxes peuvent paraître vraiment bizarres. De prime abord, certaines syntaxes peuvent paraître vraiment bizarres.
...@@ -117,7 +119,7 @@ Dans le code, on a utilisé une méthode legend appliquée à l'objet fig. Ainsi ...@@ -117,7 +119,7 @@ Dans le code, on a utilisé une méthode legend appliquée à l'objet fig. Ainsi
fig.legend(bbox_to_anchor=(1, 0), loc="lower right", fig.legend(bbox_to_anchor=(1, 0), loc="lower right",
bbox_transform=fig.transFigure, ncol=4) bbox_transform=fig.transFigure, ncol=4)
``` ```
Pour se rendre compte de la différence, mettez cette instruction en commentaire (faire précéder de # et essayez les syntaxes suivantes : Pour se rendre compte de la différence, mettez cette instruction en commentaire (faire précéder de # et **essayez les syntaxes suivantes** :
``` python ``` python
plt.legend() plt.legend()
``` ```
...@@ -128,3 +130,35 @@ ax_t.legend() ...@@ -128,3 +130,35 @@ ax_t.legend()
ax_q.legend() ax_q.legend()
``` ```
### C5) Variantes "esthétiques" et tests d'autres types de courbes (step, scatter...)
La figure tracée par la fonction **donnees_TD_ETP_2subplots** souffre de défauts esthétiques (couleurs qui se voient mal...) et de plus elle représente par des lignes des variables qui sont en fait des moyennes à pas de temps fixe.
On va donc utiliser la méthode **step** sur laquelle j'attire votre attention car j'ai eu du mal à la trouver !
A priori, la méthode **bar** convient aussi, et on la trouve plus facilement ; la doc prévient cependant que cette méthode convient à des valeurs par catégories, et toutes les étiquettes sont tracées ! On peut s'en sortir en imposant les étiquettes (mais en perdant alors l'ajustement automatique au zoom). Pire, si l'on trace plusieurs courbes qui ne partage pas exactement les mêmes étiquettes de dates (par exemple, la série originale puis la même mais rééchantillonnée au mois), on constate alors que les points sont tracés en fonction du rang et pas du tout de la date !
Tant qu'on y est, on va aussi utilise **scatter** à titre d'exercice, même si ce n'est pas vraiment pertinent ici. Scatter permet de passer comme argument color et size soit une valeur unique soit in vecteur de même taille de x et y.
Ici, il n'y a pas matière à faire varier la taille (sauf pour s'exercer), on propose de jouer sur la couleur. On en profite au passage pour manipuler un dictionnaire qui vous propose une relation entre les entiers de 1 à 12 et des couleurs.
``` python
DICO_COULEURS_MOIS = {1: "dimgrey", 2: "black", 3: "palegreen", 4: 'mediumspringgreen', 5: 'forestgreen', 6: 'gold', 7: 'orange',
8:'orangered', 9:'deepskyblue', 10:'royalblue', 11:'navy', 12:'silver'}
```
Evidemment, vous pouvez aussi intervenir dans ce dictionnaire.
Les données étant dans le pandas DataFrame DF_PTQ, on va remplir une liste en parcourant son index, dont les éléments sont au format date, et en allant chercher la valeur qui correspond à la clé "numéro de mois de cette date".
``` python
# couleurs par mois : prétexte pour manipuler dictionnaires et scatter
liste_couleurs = []
for date in DF_PTQ.index:
liste_couleurs.append(DICO_COULEURS_MOIS[date.month])
```
Evidemment, on peut écrire la même chose avec une liste en intension (comprehension list).
Il ne reste ensuite qu'à appliquer **scatter** en précisant pour l'argument **c** la liste de couleurs.
``` python
liste_couleurs = [ DICO_COULEURS_MOIS[date.month] for date in DF_PTQ.index]
ax_t.scatter(DF_PTQ.index, DF_PTQ[etiquette_temperatures].tolist(), marker='*', ls=':',
label=etiquette_temperatures, c=liste_couleurs)
```
Si vous avez bien assimilé cette manip avec les dictionnaires, vous pourriez écrire une fonction adaptée au fichier dans sa forme initiale, avec des "janv-01" et autres "sept-02".
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