Overblog Suivre ce blog
Editer l'article Administration Créer mon blog

Une courbe d'iso-intensité avec matplotlib (chapitre 4)

2 Mai 2010 , Rédigé par Roger Bunivot Publié dans #source

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)

Partager cet article

Repost 0

Commenter cet article