... | ... | @@ -3,8 +3,7 @@ |
|
|
|
|
|
**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**
|
|
|
|
|
|
**Mots clés** : **matshow** (et **imshow**), **contour et contourf**, **geopandas**, **colormap** (discrétisation ; ListedColormap, BoundaryNorm...), **colorbar**
|
|
|
|
|
|
\*\* Fonctions évoquées pour comparaison \*\* : **pcolormesh**
|
|
|
|
... | ... | @@ -141,16 +140,24 @@ fig.show() |
|
|
|-----------------------------------------|-------------------------------------------------|
|
|
|
| ![Cartes_Replit_4](uploads/d34b473b6d3dc4b6e991bc66b9e6a79e/Cartes_Replit_4.PNG) | ![Cartes_Replit_5](uploads/a869b3360c738f4bd1927d213b767689/Cartes_Replit_5.PNG) |
|
|
|
|
|
|
Dans un premier temps, on va passer une liste de couleurs 'nommées' définies par l'utilisateur (exemple de noms simples : 'red', 'blue', 'orange'), instance de la classe ListedColorMaps. Les limites de classe sont définies avec bounds.
|
|
|
Pour bien faire référence au module `matplotlib.colors` utilisé pour définir des légendes, j'ai inclus son nom dans des alias explicites lors des imports :
|
|
|
`from matplotlib.colors import ListedColormap as mpl_colors_ListedColormap` et `from matplotlib.colors import BoundaryNorm as mpl_colors_BoundaryNorm`. Ces notations sont lourdes, et par la suite vous vous passerez des alias (donc ces classes seront appelables avec ListedColormap et BoundaryNorm).
|
|
|
|
|
|
Dans un premier temps, on va prendre le nom de classe "ListedColormap" au pied de la lettre et créer une instance de cette classe en passant une liste de couleurs 'nommées'.
|
|
|
On peut choisir des noms simples (comme 'red', 'blue', 'orange', 'green'...), ou aller chercher des nuances dans la liste fournie dans la doc ou tout autre site à jour. Attention, ce sont bien des couleurs connues de "matplotlib".
|
|
|
Les limites de classe sont ensuite définies avec bounds.
|
|
|
|
|
|
```python
|
|
|
# imports avec alias explicite
|
|
|
from matplotlib.colors import ListedColormap as mpl_colors_ListedColormap
|
|
|
from matplotlib.colors import BoundaryNorm as mpl_colors_BoundaryNorm
|
|
|
|
|
|
cmap = mpl_colors_ListedColormap(
|
|
|
['white', 'greenyellow', 'limegreen', 'aquamarine', 'cyan', 'blue', 'purple'])
|
|
|
cmap.set_under('gray')
|
|
|
cmap.set_over('red')
|
|
|
cbounds = [-200, -50, -5, 0, 5, 50, 200, 500]
|
|
|
norm = mpl.colors.BoundaryNorm(cbounds, cmap.N)
|
|
|
norm = mpl_colors_BoundaryNorm(cbounds, cmap.N)
|
|
|
fig = plt.figure("")
|
|
|
ax = fig.add_subplot(111)
|
|
|
ax.set_title("colorbar = 7 couleurs nommées, plus over et under")
|
... | ... | @@ -179,7 +186,7 @@ echelle_colorimetrique) # je crée la colormap à partir de l'échelle colorim |
|
|
cmap.set_under('gray') # en dessous de la limite min : gris
|
|
|
cmap.set_over('red') #
|
|
|
cbounds = [-200, -50, -5, 0, 5, 50, 200, 500]
|
|
|
norm = mpl.colors.BoundaryNorm(cbounds, cmap.N)
|
|
|
norm = mpl_colors_BoundaryNorm(cbounds, cmap.N)
|
|
|
fig = plt.figure()
|
|
|
ax = fig.add_subplot(111)
|
|
|
ax.set_title("Echelle discrète créée à partir de la cmap viridis-reverse")
|
... | ... | |