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 14, 2021 by Poulard Christine's avatar Poulard Christine
Hide whitespace changes
Inline Side-by-side
Atelier_clics.md
View page @ 5a7d0924
...@@ -18,7 +18,7 @@ Exemple [d'événements ](https://matplotlib.org/stable/users/event_handling.htm ...@@ -18,7 +18,7 @@ Exemple [d'événements ](https://matplotlib.org/stable/users/event_handling.htm
## Avec un "MouseEvent" ## Avec un "MouseEvent"
``` ```plaintext
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
def onclick(event): def onclick(event):
...@@ -32,39 +32,35 @@ plt.show() ...@@ -32,39 +32,35 @@ plt.show()
Prenons un code \[proposé pour expliquer le principe\]([https://stackoverflow.com/questions/37363755/python-mouse-click-coordinates-as-simply-as-possible](https://stackoverflow.com/questions/37363755/python-mouse-click-coordinates-as-simply-as-possible)) : Prenons un code \[proposé pour expliquer le principe\]([https://stackoverflow.com/questions/37363755/python-mouse-click-coordinates-as-simply-as-possible](https://stackoverflow.com/questions/37363755/python-mouse-click-coordinates-as-simply-as-possible)) :
* sur la figure, on connecte l'événement "button_press_event" avec la fonction onclick : concrètement, si on clique quelque part dans la figure, on déclenche la fonction en lui passant comme argument l'événement * sur la figure, on connecte l'événement "button_press_event" avec la fonction onclick : concrètement, si on clique quelque part dans la figure, on déclenche la fonction en lui passant comme argument l'événement
* les attributs **xdata** et **ydata** de l'événement sont les coordonnées de la souris dans l'unité de la courbe, si la souris est sur un "Axes" ; l'axe sera alors retrouvé avec l'attributs **inaxes**. A ne pas confondre avec **x** et **y** qui sont les coordonnées en pixels. * les attributs **xdata** et **ydata** de l'événement sont les coordonnées de la souris dans l'unité de la courbe, si la souris est sur un "Axes" ; l'axe sera alors retrouvé avec l'attributs **inaxes**. A ne pas confondre avec **x** et **y** qui sont les coordonnées en pixels.
* dans la fonction onclick, on se contente d'écrire les valeurs dans la console. * dans la fonction onclick, on se contente d'écrire les valeurs dans la console.
| ![Figure_10points_alignes](uploads/92107c1130854bb0ddea14c603a7fed8/Figure_10points_alignes.png) | |
|--------------------------------------------------------------------------------------------------|--|
| courbe **donnees** initiale, 10 points alignés | |
On commence par une figure ne comportant qu'une seule courbe. On commence par une figure ne comportant qu'une seule courbe.
Pour manipuler, on va changer la fonction onclick, elle va maintenant ajouter (event.xdata, event.ydata) à la liste des points de la courbe, initialement dix points alignés. Pour manipuler, on va changer la fonction onclick, elle va maintenant ajouter (event.xdata, event.ydata) à la liste des points de la courbe, initialement dix points alignés.
Pour cela, il faut donner un nom à la courbe, ici donnees, et on récupère les valeurs en x avec donnees. get_xdata( ). Comme on récupère un numpy.array, il faut utiliser numpy.append pour concaténer le vecteur existant avec le nouveau point., et on le passe comme nouveau vercteur avec donnees.set_xdata(). On rafraîchit la courbe avec draw_idle. Pour cela, il faut donner un nom à la courbe, ici donnees, et on récupère les valeurs en x avec donnees. get_xdata( ). Comme on récupère un numpy.array, il faut utiliser numpy.append pour concaténer le vecteur existant avec le nouveau point., et on le passe comme nouveau vercteur avec donnees.set_xdata(). On rafraîchit la courbe avec draw_idle.
```python
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
import numpy as np import numpy as np
fig = None fig = None
def onclick(event): def onclick(event):
donnees.set_xdata(np.append(donnees.get_xdata(), event.xdata)) donnees.set_xdata(np.append(donnees.get_xdata(), event.xdata))
donnees.set_ydata(np.append(donnees.get_ydata(),event.ydata)) donnees.set_ydata(np.append(donnees.get_ydata(),event.ydata))
fig.canvas.draw_idle() fig.canvas.draw_idle()
fig,ax = plt.subplots() fig,ax = plt.subplots()
donnees, = ax.plot(range(10), marker='o') donnees, = ax.plot(range(10), marker='o')
fig.canvas.mpl_connect('button_press_event', onclick) fig.canvas.mpl_connect('button_press_event', onclick)
plt.show() plt.show()
```
![Figure_on_ajoute_des_points](uploads/f7559a93cb64796ce97dca1714d8c0f3/Figure_on_ajoute_des_points.png) ![Figure_on_ajoute_des_points](uploads/f7559a93cb64796ce97dca1714d8c0f3/Figure_on_ajoute_des_points.png)
......
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