... | ... | @@ -237,9 +237,16 @@ fig.canvas.mpl_connect('button_press_event', onclick_proche_2courbes) |
|
|
plt.show()
|
|
|
```
|
|
|
|
|
|
## Avec un "PickEvent" :
|
|
|
## Avec un "PickEvent" : une fausse bonne idée ?
|
|
|
|
|
|
La méthode précédente fonctionne, mais elle a l'inconvénient de faire des calculs sur l'ensemble des points de la courbe. La doc de matploblib et quelques tutos conseillent d'utiliser la notion de _picker_ qui réalise une **présélection** des points les plus proche du clic.
|
|
|
les tutos de "Picker" que nous avons utilisés ne sont pas toujours très explicites, et mélangent un peu les "unités écran" et les "unités du graphique", mais avec quelques explications sur la notion d'**event** et les attributs des événements il n'y a en fait pas de grosses difficultés, les notations sont juste un peu pénibles.
|
|
|
Nous montrons dans la suite que Picker :
|
|
|
- :thumbsup: est outil de préselection, qui donne des résultats corrects sur un objet (pour nous , une courbe) une fois que l'on en maîtrise les propriétés ;
|
|
|
- :thumbsdown: n'est pas adapté à la sélection d'un ensemble de points de plusieurs courbes simultanément (il travaille objet par objet, indépendamment);
|
|
|
- :thumbsdown: n'a pas donné de résultats corrects dans un graphique matplotlib inséré dans un objet PyQT
|
|
|
Notre conclusion est qu'il vaut sans doute mieux se contenter du "mouseevent" et de faire ensuite la sélection du point le plus proche "à la main", surtout s'il y a plusieurs courbes.
|
|
|
|
|
|
On va d'abord comprendre le principe du Picker dans un cas simple, sur une figure ne comportant qu'une seule courbe, [en raisonnant en distances en coordonnées des données](https://gitlab.irstea.fr/christine.poulard/atelier-matplotlib/-/blob/master/test_picker_simple_avec_annotation.py). Ensuite, on va [comparer les résultats en distance "données" et "écran"](https://gitlab.irstea.fr/christine.poulard/atelier-matplotlib/-/blob/master/test_picker_pk6700_avec_annotation.py).
|
|
|
|
|
|
![sélection picker](uploads/510c61180d0c1d51a059871fed23ab1c/selection_picker.png)
|
... | ... | |