... | @@ -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):
|
... | @@ -35,6 +35,9 @@ Prenons un code \[proposé pour expliquer le principe\]([https://stackoverflow.c |
... | @@ -35,6 +35,9 @@ Prenons un code \[proposé pour expliquer le principe\]([https://stackoverflow.c |
|
* 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.
|
|
|
|
|
... | @@ -42,29 +45,22 @@ Pour manipuler, on va changer la fonction onclick, elle va maintenant ajouter (e |
... | @@ -42,29 +45,22 @@ Pour manipuler, on va changer la fonction onclick, elle va maintenant ajouter (e |
|
|
|
|
|
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)
|
|
|
|
|
... | | ... | |