Skip to content
GitLab
    • Explore Projects Groups Topics Snippets
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
  • Atelier_clics

Atelier_clics · Changes

Page history
Update Atelier_clics authored 3 years ago by Poulard Christine's avatar Poulard Christine
Hide whitespace changes
Inline Side-by-side
Showing
with 4 additions and 2 deletions
+4 -2
Atelier_clics.md
View page @ 5d0bc8d7
...@@ -239,8 +239,8 @@ plt.show() ...@@ -239,8 +239,8 @@ plt.show()
## Avec un "PickEvent" : ## Avec un "PickEvent" :
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. On va utiliser la notion de _picker_, toujours sur une figure ne comportant qu'une seule courbe, afin de réaliser une **présélection**. 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.
De même que précédemment, on va d'abord aller au plus simple, et comprendre le principe du Picker [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). 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) ![sélection picker](uploads/510c61180d0c1d51a059871fed23ab1c/selection_picker.png)
_comparaison des points sélectionnés avec chacune des 2 distances par rapport au clic de souris, matérialisé ici par une croix bleue_ _comparaison des points sélectionnés avec chacune des 2 distances par rapport au clic de souris, matérialisé ici par une croix bleue_
...@@ -340,6 +340,8 @@ On remarque que : ...@@ -340,6 +340,8 @@ On remarque que :
* les points sélectionnés apparaissent former un cercle : ils sont donc sélectionnés dans un cercle "en coordonnées écran" (en "points", dit la doc). Les distances en x et en y étant distordues, si le rayon était défini en "coordonnées des données" on verrait une ellipse ; * les points sélectionnés apparaissent former un cercle : ils sont donc sélectionnés dans un cercle "en coordonnées écran" (en "points", dit la doc). Les distances en x et en y étant distordues, si le rayon était défini en "coordonnées des données" on verrait une ellipse ;
* pour une valeur donnée, le rayon "apparent" est le même quel que soit le zoom ou la taille de la vignette. Le rayon correspond donc à une distance "écran", qui dépend uniquement des dimensions de la vignette. Dit autrement, avec les mêmes données de départ et pour un même rayon, on captera moins de points en zoomant ou en agrandissant la taille de la vignette, les deux actions ayant pour effet de diminuer la densité des points tracés. * pour une valeur donnée, le rayon "apparent" est le même quel que soit le zoom ou la taille de la vignette. Le rayon correspond donc à une distance "écran", qui dépend uniquement des dimensions de la vignette. Dit autrement, avec les mêmes données de départ et pour un même rayon, on captera moins de points en zoomant ou en agrandissant la taille de la vignette, les deux actions ayant pour effet de diminuer la densité des points tracés.
:warning: au passage, on note que les tutos utilisés pour manipuler la notion de Picker participent un peu à la confusion, car Picker réalise une préselection en fonction d'un rayon **en pixel sur l'écran** puis affinent le résultat par le calcul de la distance minimale **en unités du graphique**.
### Cas de plusieurs Artists réceptifs : ### Cas de plusieurs Artists réceptifs :
Si on a plusieurs courbes, on peut ne lier le Picker qu'à certaines d'entre elles. Si plusieurs sont réceptives au Picker, la fonction liée sera déclenchée une fois pour chacune, ce qui empêche de calculer facilement "le" point le plus proche. Si vous ajoutez simplement une ou plusieurs courbes, l'action va être exécutée une fois par courbe "réceptive" ; pour notre objectif, cela ne permet pas de déterminer "LE" point le plus proche, mais un point par courbe. En plus, comme dans ce code on modifie une annotation vous ne verrez que le résultat pour la dernière courbe... Pour voir tous les résultats il faut une annotation par courbe, on ne donne pas notre code ici car c'est inutilement compliqué. Si on a plusieurs courbes, on peut ne lier le Picker qu'à certaines d'entre elles. Si plusieurs sont réceptives au Picker, la fonction liée sera déclenchée une fois pour chacune, ce qui empêche de calculer facilement "le" point le plus proche. Si vous ajoutez simplement une ou plusieurs courbes, l'action va être exécutée une fois par courbe "réceptive" ; pour notre objectif, cela ne permet pas de déterminer "LE" point le plus proche, mais un point par courbe. En plus, comme dans ce code on modifie une annotation vous ne verrez que le résultat pour la dernière courbe... Pour voir tous les résultats il faut une annotation par courbe, on ne donne pas notre code ici car c'est inutilement compliqué.
......
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

Menu

Explore Projects Groups Topics Snippets