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_G_widgets

Atelier_G_widgets · Changes

Page history
Update Atelier_G_widgets authored Dec 01, 2021 by Poulard Christine's avatar Poulard Christine
Hide whitespace changes
Inline Side-by-side
Atelier_G_widgets.md
View page @ 60d356c2
...@@ -28,12 +28,14 @@ On définit une courbe fixe avec **plot**, une sinusoïde. Il ne serait pas néc ...@@ -28,12 +28,14 @@ On définit une courbe fixe avec **plot**, une sinusoïde. Il ne serait pas néc
On place une textbox dans la vignette ax_tbox. On n'a pas besoin de la nommer car elle est définie dans le programme principal, le "garbage collector" ne va donc pas l'expulser. , on a défini une couleur de fond et une couleur "en cas de survol" : quand on passe la souris au-dessus ("hover"), la couleur changera. On place une textbox dans la vignette ax_tbox. On n'a pas besoin de la nommer car elle est définie dans le programme principal, le "garbage collector" ne va donc pas l'expulser. , on a défini une couleur de fond et une couleur "en cas de survol" : quand on passe la souris au-dessus ("hover"), la couleur changera.
### définition de la fonction associée à un événement ("callback")
| la souris ne survole pas la textbox | la souris survole la textbox | | la souris ne survole pas la textbox | la souris survole la textbox |
|-------------------------------------|------------------------------| |-------------------------------------|------------------------------|
| ![Sinus_modifiable](uploads/aa1f7671490ea6eecddd2a91bda8b21c/Sinus_modifiable.JPG) | ![sinusoide](uploads/6c86fcf0d9febe8626c3c38b407f5a6b/sinusoide.png) | | ![Sinus_modifiable](uploads/aa1f7671490ea6eecddd2a91bda8b21c/Sinus_modifiable.JPG) | ![sinusoide](uploads/6c86fcf0d9febe8626c3c38b407f5a6b/sinusoide.png) |
L'événement **on_submit**="une valeur a été modifiée dans la textbox" est associé à une fonction, appelée update, qu'il faut à présent définir\*\*. Cette fonction va tout simplement lire la valeur dans la textbox (argument "val" de la fonction ), transformée en entier positif, et tirer au hasard autant de valeurs aléatoires entre un et 6, et placer les points (x, sin(x)) pour tous les points x de cette série. Au lieu de définir une nouvelle courbe à chaque fois, on va modifier scat, grâce à la méthode **set_offsets** qui est analogue à la méthode **set_data** pour plot. On en profite aussi pour modifier une liste d'étiquettes que l'on va placer sur le graphique grâce à la méhtode **annotate**, qu'il est utile de connaître. On verra donc : ### définition de la fonction associée à un événement ("callback")
L'événement **on_submit**="une valeur a été modifiée dans la textbox" est associé à une fonction, appelée update, qu'il faut à présent définir\*\*. Cette fonction va tout simplement lire la valeur dans la textbox (argument "val" de la fonction ), la transformer en entier positif, et tirer au hasard autant de valeurs aléatoires entre 0 et 6 (donc à peu près entre 0 et 2 pi), et placer les points (x, sin(x)) pour tous les points x de cette série. On modifie la valeur dans la textbox pour refléter les éventuels changements qui ont été faits : on prend la valeur absolue de la partie entière, et si ça n'est pas un chiffre on prend la valeur par défaut.
Au lieu de définir une nouvelle courbe à chaque fois, on va modifier scat, grâce à la méthode **set_offsets** qui est analogue à la méthode **set_data** pour plot. On en profite aussi pour modifier une liste d'étiquettes que l'on va placer sur le graphique grâce à la méthode **annotate**, qu'il est utile de connaître. On verra donc :
- les points, représentés par des carrés ; pour montrer comment changer les couleurs dans scatter, on a décidé que le 2e de chaque série, dans l'ordre de tirage, sera rouge et les autres orange ; pour en savoir plus, la [page dédiée à scatter](focus_scatter) est beaucoup plus détaillée ; - les points, représentés par des carrés ; pour montrer comment changer les couleurs dans scatter, on a décidé que le 2e de chaque série, dans l'ordre de tirage, sera rouge et les autres orange ; pour en savoir plus, la [page dédiée à scatter](focus_scatter) est beaucoup plus détaillée ;
- les annotations, qui correspondent à l'abscisse mise en forme grâce à une f-string (valeur précédée de # et avec 2 chiffres après la virgule) - les annotations, qui correspondent à l'abscisse mise en forme grâce à une f-string (valeur précédée de # et avec 2 chiffres après la virgule)
...@@ -44,7 +46,7 @@ from matplotlib import pyplot as plt ...@@ -44,7 +46,7 @@ from matplotlib import pyplot as plt
from matplotlib.widgets import TextBox from matplotlib.widgets import TextBox
import numpy as np import numpy as np
x = np.arange(0, 2 * np.pi, 0.01) x = np.arange(0, 2 * np.pi, 0.01) # définition des points de la sinusoïde de 0 à 2 pi, par pas de 0.01
nb_points_ini = 3 nb_points_ini = 3
ann_list = [] ann_list = []
...@@ -59,9 +61,9 @@ def update(val): ...@@ -59,9 +61,9 @@ def update(val):
except ValueError: except ValueError:
nombre = nb_points_ini nombre = nb_points_ini
text_box.set_val(str(nombre)) text_box.set_val(str(nombre)) # on place la valeur éventuellement transformée dans la textbox
# tirage de n, vecteur de taille nombre = abscisses comprises entre 0 et 6 (pour fait un motif de sinusoïde) # tirage de n, vecteur de taille nombre = abscisses comprises entre 0 et 6 (pour correspondre à l'étendue d'un un motif de sinusoïde)
n = np.random.rand(nombre) * 6 n = np.random.rand(nombre) * 6
scat.set_offsets(np.c_[n, np.sin(n)]) scat.set_offsets(np.c_[n, np.sin(n)])
liste_couleurs = [] liste_couleurs = []
......
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