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 invitons à y créer vos nouveaux projets.

  • Poulard Christine
  • PYTHON - Atelier MatPlotLibPYTHON - Atelier MatPlotLib
  • Wiki
  • focus_scatter

focus_scatter · Changes

Page history
Update focus_scatter authored Dec 03, 2021 by Poulard Christine's avatar Poulard Christine
Hide whitespace changes
Inline Side-by-side
focus_scatter.md
View page @ f226eaa3
...@@ -78,16 +78,21 @@ plt.show() ...@@ -78,16 +78,21 @@ plt.show()
En regardant la figure, on devine qu'il y a un code couleur, mais le graphique ne donne aucune indication sur une éventuelle correspondance valeur/couleur. En regardant la figure, on devine qu'il y a un code couleur, mais le graphique ne donne aucune indication sur une éventuelle correspondance valeur/couleur.
On peut imaginer que **plt.legend()** fera le boulot. Vous pouvez essayer, si possible en affectant un nom à l'argument **label** du scatter. Hélas, vous verrez un symbole unique, donc avec l'une des couleurs et l'une des tailles possibles. On peut imaginer que **plt.legend()** fera le boulot. Vous pouvez essayer, si possible en affectant un nom à l'argument **label** du scatter. Hélas, vous verrez un symbole unique, donc avec l'une des couleurs et l'une des tailles possibles.
Pour montrer l'échelle de couleur d'une **colormap**, il suffit d'appeler la **colorbar** correspondante, que l'on peut 'personnaliser' (customize pour les recherches anglophones). Pour montrer l'échelle de couleur d'une **colormap**, il suffit d'appeler la **colorbar** correspondante, que l'on peut 'personnaliser' (customize pour les recherches anglophones).
On va donner ici la procédure, très simple, et avancer vers des colorbars plus personnalisées, ici pour tenir compte de la nature discrète des valeurs.
On donnera ensuite d'autres méthodes pour tracer des **légendes plus classiques personnalisées**, en s'inspirant des tutos de la doc.
### ajouter une colorbar continue à une courbe nommée ### ajouter une colorbar continue
Il suffit d'associer une colorbar à notre courbe portant un code couleur ("mappable") en une instruction. On peut ajouter des arguments, comme par exemple un titre.
```python ```python
# on va cette fois nommer l'objet retourné par la méthode scatter
cax = plt.scatter(dates, liste_mois, c=liste_mois, s=[4 * (date.year - 1990) for date in dates], cmap='viridis') cax = plt.scatter(dates, liste_mois, c=liste_mois, s=[4 * (date.year - 1990) for date in dates], cmap='viridis')
plt.colorbar(cax) plt.colorbar(cax) # c'est cet objet qui est passé en argument à la méthode colorbar
``` ```
### ajouter une colorbar discrétisée à partir de la colorbar continue ### ajouter une colorbar discrétisée à partir de la colorbar continue
Ici, on a certes utilisé une colorbar continue, mais on a des valeurs discrètes, et on préfère marquer la correspondance valeur/couleur. On va donc **discrétiser la colormap** en définissant des limites de classe avec **bounds** et **norms** En première intention, on pensera sans doute à définir des limites commençant aux valeurs entières : \[1,2,3,...,12\] ; soit en Python range(1,13). Cependant, pour avoir une légende avec des classes centrées sur les valeurs entières, on propose de décaler les limites des classes d'un demi, en écrivant par exemple np.arange(0.5, 13, 1). On a changé, cette fois on utilise la colormap **rainbow**, vous pouvez en tester d'autres. Ici, on a certes utilisé une colorbar continue, mais on a des valeurs discrètes, et on préfèrerait marquer la correspondance valeur discrète/couleur. On va donc **discrétiser la colormap** en définissant des limites de classe que l'on va transformer en objet **norm**, que l'on passera comme argument dans la méthode scatter (détail ci-dessous).
En première intention, on pensera sans doute à définir des limites commençant aux valeurs entières : \[1,2,3,...,12\] ; soit en Python **range(1,13)**. Cependant, pour avoir une légende avec des classes centrées sur les valeurs entières, on propose de décaler les limites des classes d'un demi, en écrivant par exemple np.arange(0.5, 13, 1). On a changé, cette fois on utilise la colormap **rainbow**, vous pouvez en tester d'autres.
En fait, ici c'est **BoundaryNorm** qui paraît faire tout le travail : En fait, ici c'est **BoundaryNorm** qui paraît faire tout le travail :
......
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