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 recommandons d'y créer tous vos nouveaux projets.

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

Atelier_clics · Changes

Page history
Update Atelier_clics authored Sep 15, 2021 by Poulard Christine's avatar Poulard Christine
Hide whitespace changes
Inline Side-by-side
Atelier_clics.md
View page @ 0c39419f
**But de l'atelier** : manipuler les notions d' **événement** et de **fonction associée** pour rendre un graphique interactif.
**Autres notions manipulées au passage** : modifier certaines caractéristiques d'une courbe existante avec set_data() ou set_xdata() et set_ydata() ; optionnel : le widget "Textbox".
**Autres notions manipulées au passage** :
- Python : **comprehension list** : création d'une nouvelle liste par une syntaxe plus performante qu'une boucle for classique (exemple de syntaxe : [x*x for x in liste_x] va créer une liste des carrés des éléments de liste_x) ; **zip** pour parcourir deux ou plusieurs conteneurs (liste, array...) simultanément, càd en prenant à l'itération i l'élément i de chaque conteneur, comme une fermeture éclair parcourt les dents situées de part et d'autre de la fermeture.
- spécifique mpl : modifier certaines caractéristiques d'une courbe existante avec **set_data()** ou **set_xdata() et set_ydata()** ; optionnel : le widget **"Textbox"**.
**Application** : sélectionner sur une courbe le point le plus proche d'un clic de souris
......@@ -76,7 +78,12 @@ Il restera à déplacer la courbe "sélection",réduite à un point, aux coordon
```python
def onclick_proche(event):
x_souris, y_souris = event.xdata, event.ydata
distances = [((x-x_souris)**2 + (y-y_souris)**2)**(1/2) for x,y in zip(donnees.get_xdata(), donnees.get_ydata())]
# deux syntaxes équivalentes, une avec get_data() l'autre avec get_xdata() et get_ydata()
# solution 1 : on boucle sur deux listes en même temps avec zip pour former un tuple (x,y)
distances = [((x-x_souris)**2 + (y-y_souris)**2)**(1/2) for (x,y) in zip(donnees.get_xdata(), donnees.get_ydata())]
# équivalent plus simple, où on boucle sur une liste de **tuples**
# distances = [((x-x_souris)**2 + (y-y_souris)**2)**(1/2) for (x,y) in donnees.get_data()]
distance_min = min(distances)
idx_min = np.argmin(distances)
selection.set_data([donnees.get_xdata()[idx_min]], [donnees.get_ydata()[idx_min]])
......
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