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 Sep 22, 2021 by Poulard Christine's avatar Poulard Christine
Show whitespace changes
Inline Side-by-side
Atelier_D_carte.md
View page @ 27ef7feb
## \*\*(⚠ en construction ! 🚧 👷 ) \*\*
**Objectifs** :
**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**)
**Mots clés** : **matshow** (et **imshow**), **contour et contourf**, **geopandas**, **colormap** (discrétisation ; ListedColormap...), **colorbar**
**Modules optionnels** : **Shapely**, **pyproj**, **geopandas**, (_**cartopy ?**_)
**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))
- **1.a** affichage sous forme de matrice (abscisses et ordonnées = indices de colonne et de lignes)
- **1.b** ajout d'une légende colorimétrique (**colorbar**)
- **1.c** affichage de la carte en coordonnées précisées via les xmin, xmax, ymin, ymax (argument **extent=**(gauche, droite, haut, bas))
- **1.d** personnalisation de la **colormap** (code couleur) et de la **colorbar** (légende)
**Etape 2** : lire un fichier **shape** et tracer les lignes ou polygones correspondants avec le module **Shapely**. Variante : avec **geopandas**, un module puissant mais difficile à installer
**Etape 3** : lire des données (x,y,z) et les représenter par des isolignes
**Etape 4** : _à venir_ : gestion des projections, modules pyproj et geopandas
* tracer une carte à partir d'une matrice de valeurs ("heatmap"), définir l'échelle des couleurs et la légende (=customiser la **colormap** et la **colorbar**)
* lire un fichier **shape** et tracer les lignes ou polygones correspondants avec le module **Shapely**. Variante : avec **geopandas**, un module puissant mais difficile à installer
**Mots clés** : colormap (discrétisation ; ListedColormap...), colorbar
<img src="uploads/3495d20090b9fa6f99526442c859cf9b/carte.png" width="240">
_Exemple de carte d'intensité de pluie 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_
**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 ce git, le code est plus complet, et permet de tracer :
......@@ -19,7 +34,7 @@ Sur ce git, le code est plus complet, et permet de tracer :
* des champs lus dans un fichier binaire (pour info)
* des fichiers shape.
## Premier contact avec _plt.matshow_, sur une matrice simple
## Etape 1.a : Premier contact, afficher une matrice avec _plt.matshow_
Un premier contact avec la méthode **plt.imshow** ou **plt.matshow**, où on passe juste une matrice .
Un bon réflexe : lire la doc !
......@@ -55,7 +70,9 @@ Quelques remarques suite à la première figure générée :
| ![Cartes_Replit_2](uploads/cf23f79e6554fe32fbc2de57eceb3e89/Cartes_Replit_2.PNG) | ![](uploads/7b3cc259ebe50939fce5a65662361842/Cartes_Replit_3.PNG) |
**Etape 2 **: on va ajouter une légende colorimétrique, sans préciser ses propriétés. On en profite pour ajouter un carré orange de côté 1 dont un des sommets est en (0,0), pour matérialiser le décalage entre le pixels et la grille. Note : l'argument 'interpolate' nous permet de choisir entre cette représentation "par pixels" et une représentation lissée.
**Etape 1.b **: légende colorimétrique
Dans un premier temps, on va demander à afficher la légende ; comme on n'a pas précisé le code couleur, donc c'est donc un paramétrage "par défaut". On en profite pour ajouter un carré orange de côté 1 dont un des sommets est en (0,0), pour matérialiser le décalage entre le pixels et la grille. Note : l'argument 'interpolate' nous permet de choisir entre cette représentation "par pixels" et une représentation lissée.
```python
from matplotlib import pyplot as plt
......@@ -77,7 +94,10 @@ plt.tick_params(labeltop=False, labelbottom=True)
fig.show()
```
**Etape 3 **: On spécifie les coordonnées des coins grâce à l'argument _extent_. La carte reste visuellement identique mais le repère a changé : les cases coïncident alors avec les mailles de la grille, et l'axe des y prend alors la valeur 0 en bas . Pour bien montrer le changement de repère, on a placé un rectangle défini de la même manière qui n'a pas le même emplacement dans les 2 repères.
**Etape 1.b **: On spécifie les coordonnées des coins grâce à l'argument _extent_.
=========================
La carte reste visuellement identique mais le repère a changé : les cases coïncident alors avec les mailles de la grille, et l'axe des y prend alors la valeur 0 en bas . Pour bien montrer le changement de repère, on a placé un rectangle défini de la même manière qui n'a pas le même emplacement dans les 2 repères.
Voir aussi l'argument **origin** qui peut être utile.
```python
fig = plt.figure("D'une matrice à une carte de champ")
......@@ -95,7 +115,7 @@ plt.tick_params(labeltop=False, labelbottom=True)
fig.show()
```
**Etape 4 **: personnaliser l'échelle colorimétrique et la légende correspondante
**Etape 1.d **: personnaliser l'échelle colorimétrique et la légende correspondante
On peut personnaliser le code couleur, en imposant les couleurs et les limites de classe, et la légende, en formatant les valeurs ou en ajoutant un titre par exemple.
| 4) on peut définir une colormap par une liste de couleurs, et spécifier des limites de classe ; notez les classes pour "-200 et moins" ou "500 et plus" | 5) quand c'est préférable, on peut partir d'une échelle colorimétrique continue que l'on va découper en N classes. Il reste possible de la modifier couleur par couleur. |
......@@ -152,7 +172,12 @@ plt.tick_params(labeltop=False, labelbottom=True)
fig.show()
```
## Travailler avec des vrais fichiers de champs et des shapes
## **Etape 2** : Lire et tracer des shapes
=================
Lire des fichiers *shape**, issus de SIG comme QGis (plusieurs fichiers dont un avec l'extension *.shp) est utile indépendamment ou avec une représentation de champs de valeur, pour laquelle ils serviront au minimum de points de repère.
## **Etape 2.a** : Lire des fichiers shape "seuls"
Travailler avec des vrais fichiers de champs et des shapes
Dans le code, on trouve :
......
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