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 Oct 25, 2021 by Poulard Christine's avatar Poulard Christine
Show whitespace changes
Inline Side-by-side
focus_scatter.md
View page @ 47ebcc7a
......@@ -3,6 +3,7 @@
## focus sur la méthode **SCATTER**
Objectif : connaître la méthode **scatter** et en particulier :
- les différentes manières d'utiliser les codes couleur (une couleur, liste de couleurs fixées par l'utilisateur, code couleur selon une colormap...)
- idem avec les tailles : taille fixe, taille selon liste ou taille selon une colonne
- les méthodes pour updater une courbe de type scatter (set_data, set_facecolors...)
......@@ -13,17 +14,55 @@ Objectif : connaître la méthode **scatter** et en particulier :
Comme d'habitude, la référence la plus complète et la plus fiable car régulièrement mise à jour est [la doc officielle](https://matplotlib.org/devdocs/api/_as_gen/matplotlib.axes.Axes.scatter.html?highlight=scatter#matplotlib.axes.Axes.scatter)
Le tableau ci-dessous est proposé pour mettre en évidence quelques différences. On remarquera que les arguments de **scatter** sont souvent au pluriel : color**s**, size**s** car ils peuvent être des vecteurs.
| méthode | plot (pour comparaison) | scatter |
| ------ | ------ | ------ |
| ligne| oui par défaut, sauf si on précise ls='None'| non (attention, linewidths est relatif au contour des markers|
| markers| non par défaut, il faut préciser marker="o" (ou [tout autre symbole valide](https://matplotlib.org/devdocs/api/markers_api.html#module-matplotlib.markers))| cercle par défaut ; accès à la même liste des markers|
| couleur des markers| une seule couleur, exemple markercolor = 'red' | une seule couleur, c='red' ou une liste de couleurs c=vecteur_couleurs ou un code couleur (cmap) et une colonne de valeurs de référence |
| couleur intérieure des markers| une seule couleur, exemple markerfacecolor = 'red' (alias mfc)| une seule couleur, c='red' ou une liste de couleurs c=vecteur_couleurs ou un code couleur et une colonne de valeurs de référence |
| couleur contour des markers| une seule couleur, exemple markeredgecolor = 'red' (alias mec)| défaut = la même couleur que l'intérieur (='face') ; on peut préciser une couleur ou une liste de couleurs ou 'none' (default: 'face') |
| taille | une valeur, exemple markersize = 20| une taille ou une liste de tailles, exemple sizes=liste_tailles 'none' (default: 'face') |
| update des coordonnées des points| facile : set_data, set_xdata, set_ydata| facile : set_offset |
| update des couleurs des points| facile : set_color| facile : set_edgecolors, set_facecolors |
|---------|-------------------------|---------|
| ligne | oui par défaut, sauf si on précise ls='None' | non (attention, linewidths est relatif au contour des markers |
| markers | non par défaut, il faut préciser marker="o" (ou [tout autre symbole valide](https://matplotlib.org/devdocs/api/markers_api.html#module-matplotlib.markers)) | cercle par défaut ; accès à la même liste des markers |
| couleur des markers | une seule couleur, exemple markercolor = 'red' | une seule couleur, c='red' ou une liste de couleurs c=vecteur_couleurs ou un code couleur (cmap) et une colonne de valeurs de référence |
| couleur intérieure des markers | une seule couleur, exemple markerfacecolor = 'red' (alias mfc) | une seule couleur, c='red' ou une liste de couleurs c=vecteur_couleurs ou un code couleur et une colonne de valeurs de référence |
| couleur contour des markers | une seule couleur, exemple markeredgecolor = 'red' (alias mec) | défaut = la même couleur que l'intérieur (='face') ; on peut préciser une couleur ou une liste de couleurs ou 'none' (default: 'face') |
| taille | une valeur, exemple markersize = 20 | une taille ou une liste de tailles, exemple sizes=liste_tailles 'none' (default: 'face') |
| update des coordonnées des points | facile : set_data, set_xdata, set_ydata | facile : set_offset |
| update des couleurs des points | facile : set_color | facile : set_edgecolors, set_facecolors |
### 1. Le plus simple : scatter avec une seule couleur et une seule taille
Vous pouvez tester le petit code ci-dessous : la méthode plot trace des lignes grises, la méthode scatter place des points bleus. N'hésitez pas à modifier les arguments pour comprendre. On trace ici le numéro du mois en fonction de la date, cela n'a pas grand intérêt mais permet de bien comprendre comment fonctionnent les arguments de couleur et de taille.
```python
import matplotlib.pyplot as plt
import numpy as np
from datetime import datetime, timedelta
date_ini = datetime(2000,1,1)
dates = []
liste_mois = []
for annee in range(2000,2022):
for mois in range(1,13):
dates.append(datetime(annee, mois,1))
liste_mois.append(mois)
plt.plot(dates, liste_mois)
plt.scatter(dates, liste_mois, c='blue', s=20)
plt.show()
```
![scatter_1](uploads/283a2242bf835e48b439c84056d2a5f4/scatter_1.png)
### 2. Faire varier les couleurs et les tailles
On va créer un code couleur de plusieurs façons ; on va en détailler 2 :
* comme dans l'atelier B, on va définir par un dictionnaire une correspondance numéro de mois => couleur
* plus simple, on désigne juste un vecteur dont les valeurs vont être traduites en couleurs selon une colormap : code ci-dessous.
* on en profite pour faire varier également la taille ; on définit le vecteur des tailles par une opération sur l'année. Grâce à l'argument **year** on peut facilement récupérer le numéro d'année d'un vecteur de dates.
*
```
plt.plot(dates, liste_mois, c='grey')
plt.scatter(dates, liste_mois, c=liste_mois, s=[2*(date.year - 1980) for date in dates], cmap='viridis')
plt.show()
```
![scatter_2](uploads/b0c5991ee71174bb184dfdaa66bc94f5/scatter_2.png)
\ No newline at end of file
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