... | ... | @@ -49,7 +49,7 @@ les arguments **"extent "** et **"origin"** semblent assez logique mais ils sont |
|
|
|
|
|
_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")
|
|
|
## **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**.
|
|
|
|
... | ... | @@ -59,7 +59,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.
|
|
|
|
|
|
## Etape 1.a : Premier contact, afficher une matrice avec _plt.matshow_
|
|
|
### **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 ! **Axes.matshow(Z:array-like, kwargs)**¶ _Plot the values of a 2D matrix or array as color-coded image. The matrix will be shown the way it would be printed, with the first row at the top. Row and column numbering is zero-based._
|
|
|
|
... | ... | @@ -84,11 +84,12 @@ Quelques remarques suite à la première figure générée : |
|
|
* 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) |
|
|
|
|
|
|
\*\*Etape 1.b \*\*: légende colorimétrique
|
|
|
| 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) | ![Cartes_Replit_3](uploads/7b3cc259ebe50939fce5a65662361842/Cartes_Replit_3.PNG) |
|
|
|
|
|
|
## **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.
|
|
|
|
... | ... | @@ -114,7 +115,7 @@ plt.tick_params(labeltop=False, labelbottom=True) |
|
|
plt.show()
|
|
|
```
|
|
|
|
|
|
# \*\*Etape 1.c \*\*: On spécifie les coordonnées des coins grâce à l'argument _extent_.
|
|
|
### **Etape 1.c **: 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.
|
|
|
|
... | ... | @@ -134,7 +135,7 @@ plt.tick_params(labeltop=False, labelbottom=True) |
|
|
fig.show()
|
|
|
```
|
|
|
|
|
|
\*\*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.
|
|
|
### **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. |
|
|
|
|-----------------------------------------|-------------------------------------------------|
|
... | ... | |