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 23, 2021 by Poulard Christine's avatar Poulard Christine
Show whitespace changes
Inline Side-by-side
Atelier_D_carte.md
View page @ 0a480d1e
......@@ -60,10 +60,7 @@ 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
* voir l'échelle colorimétrique : étape 3
* comment customiser l’échelle ? : étape 4
* 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 |
|-----------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------|
| ![Cartes_Replit_2](uploads/cf23f79e6554fe32fbc2de57eceb3e89/Cartes_Replit_2.PNG) | ![](uploads/7b3cc259ebe50939fce5a65662361842/Cartes_Replit_3.PNG) |
* 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 | |------------------------------------|-------------------------------------| | ![Cartes_Replit_2](uploads/cf23f79e6554fe32fbc2de57eceb3e89/Cartes_Replit_2.PNG) | ![](uploads/7b3cc259ebe50939fce5a65662361842/Cartes_Replit_3.PNG) |
\*\*Etape 1.b \*\*: légende colorimétrique
......@@ -241,18 +238,15 @@ cax = plt.contour(matrice) # renvoie un objet matplotlib.contour.QuadContourSet
cbar= plt.colorbar(cax)
plt.show()
```
C'est à la la fois très facile, la syntaxe est concise, et très piégeux, puisqu'on se rend compte que par défaut la carte est cette fois tracée avec le point (0,0) en bas à gauche, soit **en miroir de la même information tracée avec matshow ! ! !**
Contrairement à **matshow**, les méthodes de contour acceptent des grilles irrégulières et les semis de points. : il suffit de spécifier X et Y en premier argument.
Si on passe des vecteurs en X et Y, de dimensions compatibles avec Z, on obtiendra une grille, éventuellement irrégulière comme dans le second exemple ci-dessous, et pour un semis de points irrégulier il est possible de passer une matrice des X et une matrice des Y chacune de la même dimension que Z.
C'est à la la fois très facile, la syntaxe est concise, et très piégeux, puisqu'on se rend compte que par défaut la carte est cette fois tracée avec le point (0,0) en bas à gauche, soit **en miroir de la même information tracée avec matshow ! ! !**
Contrairement à **matshow**, les méthodes de contour acceptent des grilles irrégulières et les semis de points. : il suffit de spécifier X et Y en premier argument. Si on passe des vecteurs en X et Y, de dimensions compatibles avec Z, on obtiendra une grille, éventuellement irrégulière comme dans le second exemple ci-dessous, et pour un semis de points irrégulier il est possible de passer une matrice des X et une matrice des Y chacune de la même dimension que Z.
| x et y | _matrice de l'étape 1 représentée avec contour_ | matrice de l'étape 1 représentée avec contourf |
|--------|-------------------------------------------------|------------------------------------------------|
| non précisés | ![contour_carre](uploads/93fc3d27b2eb873fb169d24e5b1006dd/contour_carre.png) | ![contourf_carre](uploads/ad802a120aa60ae7accdee6dba432ad8/contourf_carre.png) |
| x et y = (1,2,5,10,20) | ![contour](uploads/f0f3c34ef3476098e086ba2d06a9c04d/contour.png) | ![contourf](uploads/1c700acfb0c156acf77d7e4046f3907e/contourf.png) |
```python
x= (1,2,5,10,20)
y=x
......@@ -261,6 +255,34 @@ cbar= plt.colorbar(cax)
plt.show()
```
Un exemple avec de "vraies données" sur un semis de points non régulier.
Il s'agit en fait d'une grille de points régulièrement espacés dans une projection, que l'on reprojette dans une autre : la grille se déforme, et on ne peut plus utiliser \*\*matshow\*\*. On doit donc employer \*\*_contour\*_\* ou **contourf**
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 :
```
nb_couleurs = 9
nom_cmap = "viridis_r" # colormap continue qui sera discrétisée
col_under = 'grey' # couleur des valeurs inférieures à la borne basse
col_over = 'purple' # couleurs des valeurs supérieures à la borne haute
carre_blanc = True # on remplace la couleur de la classe juste au-dessus de zéro par du blanc
bounds_5min = [-1, 0.1, 0.5, 1, 2, 5, 10, 20, 30] # liste des limites de classe
# et pour une utilisation en cumul horaire
bounds_h = [-1, 0.1, 0.5, 1, 5, 10, 50, 100, 200]
```
```
custom_bar = Custom_cmap()
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,
# todo : ticks=custom_bar.bounds_5min ; remplacer "-1" par "lacunes"
cbar = fig.colorbar(cax, ax=ax0, ticks=custom_bar.bounds_5min) #
cbar.set_label(f"intensités de pluie en mm - {self.minutes//60:02d}h:{self.minutes%60:02d}min \n max = {valeur_max:.2f}")
```
![L93_Accumulated_precipitation__mm_cumul_france_1536 1km 5min_202010030445](uploads/4bee3ccd2fc0d07aaa7b568da16583da/L93_Accumulated_precipitation__mm_cumul_france_1536-1km-5min_202010030445.png)
### Compléments techniques, si besoin
#### Lire un fichier de champ binaire et le tracer
......
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