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
  • Atelier_D_carte

Atelier_D_carte · Changes

Page history
Update Atelier_D_carte authored Feb 13, 2023 by Poulard Christine's avatar Poulard Christine
Hide whitespace changes
Inline Side-by-side
Atelier_D_carte.md
View page @ 59be3ad3
## :map: méthodes pour tracer des cartes et leurs légendes ## :map: méthodes pour tracer des cartes et leurs légendes
## \*\*(⚠ en construction ! 🚧 👷 ) \*\* ## \*\*(⚠ en construction ! 🚧 👷 ) \*\*
Le code proposé ici a été testé avec matplotlib 4 ; avec la version 5 il y a des messages d'erreur suite à l'utilisation de BoundaryNorm, déjà signalés dans les bugfixes. Le code proposé ici a été testé avec matplotlib 4 ; avec la version 5 il y a des messages d'erreur suite à l'utilisation de BoundaryNorm, déjà signalés dans les bugfixes. (en 2023, on est même à la version 3.6...).
**Objectifs** : tracer une carte à partir de données (x,y,z), définir l'échelle des couleurs et la légende (=customiser la **colormap** et la **colorbar**) **Objectifs** : tracer une carte à partir de données (x,y,z), définir l'échelle des couleurs et la légende (=customiser la **colormap** et la **colorbar**)
**Objectif avancé (nouveau)** : traiter des données spatiales pour obtenir des objets géométriques (typiquement : isocontours)
**Mots clés** : **matshow** (et **imshow**), **contour et contourf**, **geopandas**, **colormap** (discrétisation ; ListedColormap, BoundaryNorm...), **colorbar** **Mots clés** : **matshow** (et **imshow**), **contour et contourf**, **geopandas**, **colormap** (discrétisation ; ListedColormap, BoundaryNorm...), **colorbar**
voir à la fin : références vers la doc voir à la fin : références vers la doc
...@@ -17,11 +19,15 @@ voir à la fin : références vers la doc ...@@ -17,11 +19,15 @@ voir à la fin : références vers la doc
# Résumé des fonctions pour tracer des cartes selon une variable (version non exhaustive ?) # Résumé des fonctions pour tracer des cartes selon une variable (version non exhaustive ?)
Le [code est disponible sur le repo](https://gitlab.irstea.fr/christine.poulard/atelier-matplotlib/-/blob/master/tests_carto_matrice5x5.py) Le [code est disponible sur le repo](https://gitlab.irstea.fr/christine.poulard/atelier-matplotlib/-/blob/master/tests_carto_matrice5x5.py)
Récupérer les calculs : comme pour toute fonction, les fonctions citées ci-dessous renvoient des objets. Pour certains usages, cela peut être intéressant : récupérer la surface pour laquelle la valeur dépasse tel seuil, sous la forme d'un objet géométrique avec ses propriétés...
**Attention aux arguments** : **Attention aux arguments** :
les arguments **"extent "** et **"origin"** semblent assez logique mais ils sont liés et c'est parfois piégeux : voir [la page dédiée et détaillée, pas si simple](https://matplotlib.org/stable/tutorials/intermediate/imshow_extent.html). Extent = (left, right, bottom, top) ; (left, right) = (gauche, droite), mais :warning: bottom et top correspondent à "bas, haut" dans ce sens... jusqu'à ce que l'on redimensionne avec **set_xlim / set_ylim**: les axes peuvent changer d'orientation... est-ce que la fonction prend des valeurs moyennes centrées sur des mailles, ou des valeurs ponctuelles qui seront interpolées...
- localisation des valeurs : par défaut, imshow trace des mailles carrées centrées sur les points de coordonnées entière ; avec extent on définit les coordonnées de la boîte englobante totale (left, right, bottom, top).
- origine : si = upper, la première valeur de la matrice est placée en (left, **top**) ; si = lower, la première valeur de la matrice est en (left, **bottom**) `matshow` et `imshow` prennent en entrée des **grilles régulières** de valeurs, `pcolormesh` travaille aussi sur des **grilles irrégulières** donc il demande en plus les coordonnées des sommets des mailles. Les vecteurs des coordonnées sont donc de la dimension du vercteur des valeurs PLUS UN : pour pouvoir encadrer toutes les valeurs - s'il y avait une seule maille il faut bien deux valeurs de x et deux de y pour tracer.
- taille des vecteurs de coordonnées : pour contourf, on raisonne en POINTS : les matrices des coordonnées X et Y doivent avoir le même nombre d'éléments que la matrice des valeurs (ou le vecteur x autant de points que de colonnes et y de lignes, pour une grille régulière) MAIS pour pcolormesh on raisonne en MAILLES : les vecteurs des coordonnées doivent contenir une valeur de plus - s'il y avait une seule maille l faut bien deux valeurs de x et deux de y pour tracer.
Pour `contourf`, on raisonne en revanche en POINTS : les matrices des coordonnées X et Y doivent avoir le même nombre d'éléments que la matrice des valeurs (grille irrégulière) ou le vecteur x autant de points que de colonnes et y de lignes ( grille rectangulaire régulière).
| MAILLAGE | Fonction | caractéristiques principales (vérifier la doc !) | exemple sur la même matrice (comparez les résultats !) | | MAILLAGE | Fonction | caractéristiques principales (vérifier la doc !) | exemple sur la même matrice (comparez les résultats !) |
|----------|----------|--------------------------------------------------|-------------| |----------|----------|--------------------------------------------------|-------------|
...@@ -31,15 +37,8 @@ ou rectangles réguliers avec extent | matshow (cas particulier de imshow)| repr ...@@ -31,15 +37,8 @@ ou rectangles réguliers avec extent | matshow (cas particulier de imshow)| repr
| PARALLELOGRAMMES même irréguliers | pcolormesh | représenter les valeurs d'une matrice de valeurs par un code couleur sur une grille à mailles rectangulaires ; on définit la grille avec un vecteur des X et un vecteur des Y (rectangles) ou une matrice des X et des Y (parallélogrammes) --- Ici, le premier point étant (0,1) la première valeur de la matrice est en (0,1), en bas à gauche, donc la carte est en miroir de la précédente | ![carte_de_champ_rectangulaire__pcolormesh_](uploads/f0acc3a81d93bc0945ca9a9c435415bf/carte_de_champ_rectangulaire__pcolormesh_.png) | | PARALLELOGRAMMES même irréguliers | pcolormesh | représenter les valeurs d'une matrice de valeurs par un code couleur sur une grille à mailles rectangulaires ; on définit la grille avec un vecteur des X et un vecteur des Y (rectangles) ou une matrice des X et des Y (parallélogrammes) --- Ici, le premier point étant (0,1) la première valeur de la matrice est en (0,1), en bas à gauche, donc la carte est en miroir de la précédente | ![carte_de_champ_rectangulaire__pcolormesh_](uploads/f0acc3a81d93bc0945ca9a9c435415bf/carte_de_champ_rectangulaire__pcolormesh_.png) |
| IRREGULIER | contour et contourf | interpoler les isolignes à partir des valeurs d'un semis de points ; contour représente les classes par des aplats de couleur, et contourf trace les isolignes (frontières de classe) | ![matrice_vers_isolignes__contourf_](uploads/0a3a241e5f5ade42542a01b4f57d5bf4/matrice_vers_isolignes__contourf_.png) | | IRREGULIER | contour et contourf | interpoler les isolignes à partir des valeurs d'un semis de points ; contour représente les classes par des aplats de couleur, et contourf trace les isolignes (frontières de classe) | ![matrice_vers_isolignes__contourf_](uploads/0a3a241e5f5ade42542a01b4f57d5bf4/matrice_vers_isolignes__contourf_.png) |
| POLYGONES | voir geopandas | colorer les polygones des objets géopandas avec un code couleur défini par une autre colonne de la DataFrame geopandas | en attente | | POLYGONES | voir geopandas | colorer les polygones des objets géopandas avec un code couleur défini par une autre colonne de la DataFrame geopandas | en attente |
| DENSITES| 2D Histograms & Hexbin| couleur selon densité de points par mailles | voir doc et [tuto J. VdP](vois)https://jakevdp.github.io/mpl_tutorial/tutorial_pages/tut3.html) | | DENSITES| 2D Histograms & Hexbin| couleur selon densité de points par mailles | voir doc et [tuto J. VdP](vois)https://jakevdp.github.io/mpl_tutorial/tutorial_pages/tut3.html) |2D Histograms and Hexbin|
2D Histograms and Hexbin
La doc explique la différence entre **matshow** et **imshow** : matshow est une surcharge de imshow ("wrapping") avec les réglages par défaut adaptés au tracé d'une matrice:
-Set origin='upper'.
-Set interpolation='nearest'.
-Set aspect='equal'.
-Ticks are placed to the left and above.
-Ticks are formatted to show integer indices.
# SOMMAIRE # SOMMAIRE
...@@ -60,6 +59,24 @@ La doc explique la différence entre **matshow** et **imshow** : matshow est une ...@@ -60,6 +59,24 @@ La doc explique la différence entre **matshow** et **imshow** : matshow est une
_Exemple de carte d'intensité de pluie à partir d'une matrice, avec tracé des rivières et d'un BV ; colormap discrète définie par une liste de couleurs ; on verra dans l'atelier comment faire mieux en discrétisant une colormap continue prédéfinie_ _Exemple de carte d'intensité de pluie à partir d'une matrice, avec tracé des rivières et d'un BV ; colormap discrète définie par une liste de couleurs ; on verra dans l'atelier comment faire mieux en discrétisant une colormap continue prédéfinie_
## Imshow et Matshow
Les deux permettent de visualiser les valeurs d'une matrice très rapidement (numéros de ligne et de colonne comme abscisse et ordonnée de 1 à 1, code couleur par défaut) ou avec customisation.
Les arguments **`extent`** et **`origin`** permettent de régler les valeurs des abscisses et ordonnées, pour tracer une carte selon un système de coordonnées par exemple.
- localisation des valeurs : par défaut, imshow trace des mailles carrées centrées sur les points de coordonnées entière ; avec extent on définit les coordonnées de la boîte englobante totale (left, right, bottom, top).
- origine : si = upper, la première valeur de la matrice est placée en (left, **top**) ; si = lower, la première valeur de la matrice est en (left, **bottom**)
- Ils semblent assez logique mais ils sont liés et c'est parfois piégeux : voir [la page dédiée et détaillée, pas si simple](https://matplotlib.org/stable/tutorials/intermediate/imshow_extent.html). Extent = (left, right, bottom, top) ; (left, right) = (gauche, droite), mais :warning: bottom et top correspondent à "bas, haut" dans ce sens... jusqu'à ce que l'on redimensionne avec **set_xlim / set_ylim**: les axes peuvent changer d'orientation...
La doc explique la différence entre **matshow** et **imshow** : matshow est une surcharge de imshow ("wrapping") avec les réglages par défaut adaptés au tracé d'une matrice:
-Set origin='upper'. (la première valeur est placée en haut)
-Set interpolation='nearest'. (pas d'interpolation)
-Set aspect='equal'. (grille carrée)
-Ticks are placed to the left and above.
-Ticks are formatted to show integer indices.
## **Etape 1** : tracer une carte à partir d'une **matrice de valeurs** ("heatmap") ## **Etape 1** : tracer une carte à partir d'une **matrice de valeurs** ("heatmap")
[Sur le REPL.it, une série de cartes simples est proposée](https://replit.com/@CPoulard/LaCartoAvecMplMatshowEtShapely#main.py), on ne travaille qu'avec une petite matrice 5x5 sortie du chapeau . Cela permet néanmoins de voir les bases : \* l'instruction **imshow** pour tracer le champ de valeurs sur une grille (en numéros de ligne et numéros de colonne) \* l'argument **extent** pour tracer avec, par exemple, des coordonnées Lambert \* faire apparaître **une échelle de couleurs et la customiser**. [Sur le REPL.it, une série de cartes simples est proposée](https://replit.com/@CPoulard/LaCartoAvecMplMatshowEtShapely#main.py), on ne travaille qu'avec une petite matrice 5x5 sortie du chapeau . Cela permet néanmoins de voir les bases : \* l'instruction **imshow** pour tracer le champ de valeurs sur une grille (en numéros de ligne et numéros de colonne) \* l'argument **extent** pour tracer avec, par exemple, des coordonnées Lambert \* faire apparaître **une échelle de couleurs et la customiser**.
......
Clone repository
Accueil ("Home")

Python, astuces et outils
  • Gestion des versions de Python des paquets (en construction) pip, venv, poetry
  • Python_modules_du_developpeur
    • La doc avec Sphinx

Matplotlib, ateliers et points théoriques

Présentation des ateliers, avec galerie

  • le problème des versions
  • notes sur les versions 3.6 et 3.5
  • bien exploiter la doc : les infos des méthodes
  • Atelier A Bases en Python utiles pour comprendre mpl
  • Atelier B graphiques simples
    • suite, lire un fichier
    • focus méthode scatter
    • focus méthodes step et bar
  • Atelier C : les objets d'une figure graphiques avec plusieurs unités
    • Point Théorie Subplots
  • Atelier D : cartes, heatmaps et leurs légendes
    • suite, les fichiers binaires extraire une matrice avec np.fromfile
    • focus : redimensionnement d'une carte "zoom"
  • Atelier E : cas des longues chroniques
  • Atelier G : interactivité widgets, toolbar et événements
    • focus : les événements "MouseEvent"
    • focus : afficher/cacher une courbe ; la mettre à jour
  • définir un style, obtenir des étiquettes de dates correctes focus plt.rcParams
  • Atelier H : tracé efficace sur données tabulaires : seaborn (pandas et mpl à venir) focus seaborn
Interfaces graphiques (GUI)
  • Un outil complet avec gestion des signaux et internationalisation: QT

  • Lexique
  • Tutographie

  • Pour les contributeurs
  • Sidebar