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 Oct 04, 2021 by Poulard Christine's avatar Poulard Christine
Hide whitespace changes
Inline Side-by-side
Atelier_D_carte.md
View page @ f1bbf887
...@@ -4,21 +4,20 @@ ...@@ -4,21 +4,20 @@
**Mots clés** : **matshow** (et **imshow**), **contour et contourf**, **geopandas**, **colormap** (discrétisation ; ListedColormap...), **colorbar** **Mots clés** : **matshow** (et **imshow**), **contour et contourf**, **geopandas**, **colormap** (discrétisation ; ListedColormap...), **colorbar**
** Fonctions évoquées pour comparaison ** : **pcolormesh** \*\* Fonctions évoquées pour comparaison \*\* : **pcolormesh**
**autre modules utilisés :** **pathlib** (notamment méthode **Path.is_file**), **Shapely** pour le traitement des objets géométriques **autre modules utilisés :** **pathlib** (notamment méthode **Path.is_file**), **Shapely** pour le traitement des objets géométriques
\*\*Modules pour les cartes géoréférencées \*\* : **pyproj**, **geopandas**, (**_cartopy ?_**) \*\*Modules pour les cartes géoréférencées \*\* : **pyproj**, **geopandas**, (**_cartopy ?_**)
# 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 ?)
| MAILLAGE | Fonction | caractéristiques principales (vérifier la doc !) | exemple 5x5 |
|MAILLAGE| Fonction| caractéristiques principales (vérifier la doc !) | |----------|----------|--------------------------------------------------|-------------|
| ------ | ------ | ------ | | CARRES | matshow | représenter les valeurs d'une matrice par un code couleur (heatmap) ---- Par défaut, l'origine (0,0) est en haut à gauche, et la valeur de la colonne 0 ligne 0 est également en haut à gauche. On peut ajuster le repère avec les arguments origin et extent | ![Cartes_Replit_2](uploads/cf23f79e6554fe32fbc2de57eceb3e89/Cartes_Replit_2.PNG) |
| CARRES| matshow| représenter les valeurs d'une matrice par un code couleur (heatmap)| | CARRES | imshow | représenter une image, soit par un code couleur (valeurs) soit par les couleurs définies directement dans l'image | (idem) |
| CARRES| imshow | représenter une image, soit par un code couleur (valeurs) soit par les couleurs définies directement dans l'image| | PARALLELOGRAMMES | 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) | ![carte_de_champ_rectangulaire__pcolormesh_](uploads/f0acc3a81d93bc0945ca9a9c435415bf/carte_de_champ_rectangulaire__pcolormesh_.png) |
| RECTANGLES| pcolormesh| représenter les valeurs d'une matrice de valeurs par un code couleur sur une grille à mailles rectangulaires| | 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) | | 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 |
# SOMMAIRE # SOMMAIRE
...@@ -62,7 +61,8 @@ _L'exemple mis en ligne dans le REPL utilise en entrée une matrice 5x5 codée e ...@@ -62,7 +61,8 @@ _L'exemple mis en ligne dans le REPL utilise en entrée une matrice 5x5 codée e
```python ```python
from matplotlib import pyplot as plt from matplotlib import pyplot as plt
# méthode matshow en spécifiant uniquement la matrice # méthode matshow en spécifiant uniquement la matrice
plt.matshow([[1, 2, 30, 50, 120], [21, 2, 50, 50, 90], [-1, 2, -30, 50, -120], [41, 42, 80, 50, 50], [9, 29, 39, 590, 10]]) ma_matrice = [[1, 2, 30, 50, 120], [21, 2, 50, 50, 90], [-1, 2, -30, 50, -120], [41, 42, 80, 50, 50], [9, 29, 39, 590, 10]]
plt.matshow(ma_matrice )
plt.show() plt.show()
``` ```
...@@ -72,10 +72,9 @@ Quelques remarques suite à la première figure générée : ...@@ -72,10 +72,9 @@ Quelques remarques suite à la première figure générée :
* Une matrice, par défaut, est tracée par matshow() selon une grille avec la première valeur dans la case _en haut à gauche_. Les cases représentant un élément de la matrice sont _centrées sur les points de grille_. => on préfèrerait 1 carré = 1 pixel : étape 2 * Une matrice, par défaut, est tracée par matshow() selon une grille avec la première valeur dans la case _en haut à gauche_. Les cases représentant un élément de la matrice sont _centrées sur les points de grille_. => on préfèrerait 1 carré = 1 pixel : étape 2
* voir l'échelle colorimétrique : étape 3 * voir l'échelle colorimétrique : étape 3
* comment customiser l’échelle ? : étape 4 * comment customiser l’échelle ? : étape 4
* comment travailler avec des données géoréférencées ? : étape 5 * comment travailler avec des données géoréférencées ? : étape 5
| deuxième étape : méthode `matshow `en spécifiant uniquement la matrice ; on a ajouté une `colorbar` | troisième étape : on envoie à matshow l'argument extent, ce qui revient à définir les coordonnées des 4 coins | | deuxième étape : méthode `matshow `en spécifiant uniquement la matrice ; on a ajouté une `colorbar` | troisième étape : on envoie à matshow l'argument extent, ce qui revient à définir les coordonnées des 4 coins |
|------------------------------------|-------------------------------------| |-----------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------|
| ![Cartes_Replit_2](uploads/cf23f79e6554fe32fbc2de57eceb3e89/Cartes_Replit_2.PNG) | ![](uploads/7b3cc259ebe50939fce5a65662361842/Cartes_Replit_3.PNG) | | ![Cartes_Replit_2](uploads/cf23f79e6554fe32fbc2de57eceb3e89/Cartes_Replit_2.PNG) | ![](uploads/7b3cc259ebe50939fce5a65662361842/Cartes_Replit_3.PNG) |
\*\*Etape 1.b \*\*: légende colorimétrique \*\*Etape 1.b \*\*: légende colorimétrique
...@@ -83,23 +82,25 @@ Quelques remarques suite à la première figure générée : ...@@ -83,23 +82,25 @@ Quelques remarques suite à la première figure générée :
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. 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 ```python
ma_matrice = [[1, 2, 30, 50, 120], [21, 2, 50, 50, 90], [-1, 2, -30, 50, -120], [41, 42, 80, 50, 50], [9, 29, 39, 590, 10]]
from matplotlib import pyplot as plt from matplotlib import pyplot as plt
from matplotlib.patches import Rectangle from matplotlib.patches import Rectangle
fig = plt.figure("D'une matrice à une carte de champ") fig = plt.figure("D'une matrice à une carte de champ")
ax = fig.add_subplot(111) ax = fig.add_subplot(111)
ax.set_title("défaut : centres des pixels \n sur les points de grille") ax.set_title("défaut : centres des pixels \n sur les points de grille")
# on a ajouté une colorbar sans spécifier d'arguments cax = ax.matshow(ma_matrice)
cax = ax.matshow([[1, 2, 30, 50, 120], [21, 2, 50, 50, 90], [-1, 2, -30, 50, -120], [41, 42, 80, 50, 50], [9, 29, 39, 590, 10]])
# on définit un rectangle puis on l'ajoute à cax pour se repérer # on définit un rectangle puis on l'ajoute à cax pour se repérer
case_en_haut_a_gauche = Rectangle((0, 0), width=1, height=1, lw=2, edgecolor='orange', case_en_haut_a_gauche = Rectangle((0, 0), width=1, height=1, lw=2, edgecolor='orange',
facecolor='None') facecolor='None')
ax.add_patch(case_en_haut_a_gauche) ax.add_patch(case_en_haut_a_gauche)
# on n'a rien défini nous-même pour le code couleur associé, les options par défaut seront utilisées (colormap), et ajustées aux données (valeurs min et max...).
#deux instructions pour définir la représentation de l'échelle colorimétrique et son titre #deux instructions pour définir la représentation de l'échelle colorimétrique et son titre
cbar = fig.colorbar(cax, ax=ax, extend='both') cbar = fig.colorbar(cax, ax=ax, extend='both')
cbar.set_label('colorbar par défaut ' ) cbar.set_label('colorbar par défaut ' )
plt.tick_params(labeltop=False, labelbottom=True) plt.tick_params(labeltop=False, labelbottom=True)
fig.show() plt.show()
``` ```
# \*\*Etape 1.b \*\*: On spécifie les coordonnées des coins grâce à l'argument _extent_. # \*\*Etape 1.b \*\*: On spécifie les coordonnées des coins grâce à l'argument _extent_.
...@@ -277,7 +278,7 @@ Il s'agit en fait d'une grille de points régulièrement espacés dans une proje ...@@ -277,7 +278,7 @@ Il s'agit en fait d'une grille de points régulièrement espacés dans une proje
En plus de np.carte, la matrice des valeurs de dimensions NxM , on a donc définit deux autres matrices de mêmes dimensions, matrice_x et matrice_y ; chaque élément (i,j) des matrices a été obtenu en transformant le point (x_j,y_i) de la grille initiale d'un système à l'autre. On peut utiliser une colorbar par défaut ou s'en créer une. Ici, on a défini une classe Custom_cmap qui prend comme arguments nb_couleurs, nom_cmap, col_under, col_over, carre_blanc, bound. Par défaut : En plus de np.carte, la matrice des valeurs de dimensions NxM , on a donc définit deux autres matrices de mêmes dimensions, matrice_x et matrice_y ; chaque élément (i,j) des matrices a été obtenu en transformant le point (x_j,y_i) de la grille initiale d'un système à l'autre. On peut utiliser une colorbar par défaut ou s'en créer une. Ici, on a défini une classe Custom_cmap qui prend comme arguments nb_couleurs, nom_cmap, col_under, col_over, carre_blanc, bound. Par défaut :
``` ```plaintext
nb_couleurs = 9 nb_couleurs = 9
nom_cmap = "viridis_r" # colormap continue qui sera discrétisée nom_cmap = "viridis_r" # colormap continue qui sera discrétisée
col_under = 'grey' # couleur des valeurs inférieures à la borne basse col_under = 'grey' # couleur des valeurs inférieures à la borne basse
...@@ -288,7 +289,7 @@ bounds_5min = [-1, 0.1, 0.5, 1, 2, 5, 10, 20, 30] # liste des limites de classe ...@@ -288,7 +289,7 @@ bounds_5min = [-1, 0.1, 0.5, 1, 2, 5, 10, 20, 30] # liste des limites de classe
bounds_h = [-1, 0.1, 0.5, 1, 5, 10, 50, 100, 200] bounds_h = [-1, 0.1, 0.5, 1, 5, 10, 50, 100, 200]
``` ```
``` ```plaintext
custom_bar = Custom_cmap() custom_bar = Custom_cmap()
cax = plt.contourf(matrice_x, matrice_y, np_carte, levels=custom_bar.bounds_5min,extend='both', cax = plt.contourf(matrice_x, matrice_y, np_carte, levels=custom_bar.bounds_5min,extend='both',
cmap=custom_bar.cmap, norm=custom_bar.norm) # "viridis_r") #levels=Custom_cmap.nb_couleurs+2, cmap=custom_bar.cmap, norm=custom_bar.norm) # "viridis_r") #levels=Custom_cmap.nb_couleurs+2,
......
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