Une courbe d'iso-intensité avec matplotlib (chapitre 4)
Extraire une ligne ou une colonne
Après avoir créé une figure où l'on a tracé des courbes d'iso-intensité, (contours plot), puis avoir ajouté la possibilité de varier les contours intéractivement, Nous allons extraire des lignes ou des colonnes.
Si l'on a besoin de comparer deux courbes d'iso-intensité il est souvent plus facile de les comparer ligne par ligne ou colonne par colonne.
On peut aussi vouloir extraire des lignes ou des colonnes afin d'appliquer une correction aux données. Par exemple pour les spectres de résonance magnétique nulcéaire (RMN) il commun d'appliquer une correction de phase.
On va dans un premier temps activer les boutons "radio" de gauche, "no", "extract", "phase".
Le bouton "no" va permettre de désactiver l'extraction des lignes et des colonnes.
Le bouton "phase" va permettre d'extraire une, deux ou trois ligne(s) ou colonne de les corriger, puis d'appliquer la correction sur la courbe d'iso-intensitée.
Tout d'abord on va définir une fonction qui permet de choisir entre ces trois options.
param ={}
def select(label):
# définir une variable globale qui permettra de rendre le graphique actif.
global cird
# definition d'un compteur (pourquoi ne pas utiliser une liste :-)
# a chaque appel de la fonction select on l'incrémente
param['compteur'] = param['compteur'] + 1
# on test ensuite quel bouton est activé et le stock dans la liste
if label == 'extract':
param['plot1D'] = label
elif label == 'phase':
param['plot1D'] = label
elif label == 'no':
param['plot1D'] = label
# on déconnecte la figure des boutons de la souris
fig_.canvas.mpl_disconnect(cird)
# et on réinitialise le compteur
param['compteur'] = 0
# on connecte la figure aux boutons de la souris
if param['compteur'] >= 1:
cird = fig_.canvas.mpl_connect('button_press_event', onclick)
return
# initialisation du compteur
param['compteur'] = 0
# appel de la fonction "select" lors du click sur le bouton radio
radio.on_clicked(select)