... | @@ -60,10 +60,7 @@ Quelques remarques suite à la première figure générée : |
... | @@ -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
|
|
* 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 | |------------------------------------|-------------------------------------| | ![Cartes_Replit_2](uploads/cf23f79e6554fe32fbc2de57eceb3e89/Cartes_Replit_2.PNG) | ![](uploads/7b3cc259ebe50939fce5a65662361842/Cartes_Replit_3.PNG) |
|
|
| 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
|
|
\*\*Etape 1.b \*\*: légende colorimétrique
|
|
|
|
|
... | @@ -241,18 +238,15 @@ cax = plt.contour(matrice) # renvoie un objet matplotlib.contour.QuadContourSet |
... | @@ -241,18 +238,15 @@ cax = plt.contour(matrice) # renvoie un objet matplotlib.contour.QuadContourSet |
|
cbar= plt.colorbar(cax)
|
|
cbar= plt.colorbar(cax)
|
|
plt.show()
|
|
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 |
|
|
| 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) |
|
|
| 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) |
|
|
| x et y = (1,2,5,10,20) | ![contour](uploads/f0f3c34ef3476098e086ba2d06a9c04d/contour.png) | ![contourf](uploads/1c700acfb0c156acf77d7e4046f3907e/contourf.png) |
|
|
|
|
|
|
|
|
|
|
```python
|
|
```python
|
|
x= (1,2,5,10,20)
|
|
x= (1,2,5,10,20)
|
|
y=x
|
|
y=x
|
... | @@ -261,6 +255,34 @@ cbar= plt.colorbar(cax) |
... | @@ -261,6 +255,34 @@ cbar= plt.colorbar(cax) |
|
plt.show()
|
|
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
|
|
### Compléments techniques, si besoin
|
|
|
|
|
|
#### Lire un fichier de champ binaire et le tracer
|
|
#### Lire un fichier de champ binaire et le tracer
|
... | | ... | |