IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Calcul scientifique Python Discussion :

Get mouse coord X,Y from figure by click.event


Sujet :

Calcul scientifique Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 7
    Par défaut Get mouse coord X,Y from figure by click.event
    Bonjour à tous !

    Voilà je suis un peu novice en Python et j'espère que certains ici pourront m'éclaircir. Je travail en python pour la programmation scientifique et j'aimerais obtenir les coordonnées d'un point sur une figure lors de l’événement click gauche de ma souris.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.plot(np.random.rand(10))
     
    def onclick(event):
    coordx= event.x
        print 'button=%d, x=%d, y=%d, xdata=%f, ydata=%f'%(
            event.button, event.x, event.y, event.xdata, event.ydata)
     
    cid = fig.canvas.mpl_connect('button_press_event', onclick)
    Le print affiche les coordonnées correctement cependant, j'aimerais récupérer xdata et ydata dans des variables pour les utiliser à nouveau par la suite dans mon programme.
    Quelqu'un a t'il une idée ? Merci d'avance de votre aide !

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 752
    Par défaut
    Citation Envoyé par benjame Voir le message
    Le print affiche les coordonnées correctement cependant, j'aimerais récupérer xdata et ydata dans des variables pour les utiliser à nouveau par la suite dans mon programme.
    Quelqu'un a t'il une idée ? Merci d'avance de votre aide !
    Comme vous débutez, le plus simple sera de passer par des variables "globales":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    xdata = ydata = None
    def onclick(event):
        global xdata, ydata
        xdata, ydata = event.xdata, event.ydata
     
    cid = fig.canvas.mpl_connect('button_press_event', onclick)
    Plus tard, vous lirez pleins de messages vous alertant sur les dangers d'une telle approche. Mais vous aurez appris d'ici là à les utiliser avec modération.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 7
    Par défaut Module à charger ?
    Citation Envoyé par wiztricks Voir le message
    Comme vous débutez, le plus simple sera de passer par des variables "globales":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    xdata = ydata = None
    def onclick(event):
        global xdata, ydata
        xdata, ydata = event.xdata, event.ydata
     
    cid = fig.canvas.mpl_connect('button_press_event', onclick)
    Plus tard, vous lirez pleins de messages vous alertant sur les dangers d'une telle approche. Mais vous aurez appris d'ici là à les utiliser avec modération.
    - W

    Bonjour,

    Merci pour votre réponse !

    Ca a bien fonctionné dans un premier temps, mais à présent je n'arrive plus à lire mes variables xdata et ydata...

    Peut être que c'est lié à un changement dans mon code, il y a t'il des modules à charger obligatoirement pour cela ?

    Est ce possible d'afficher en direct le résultat avec un print ? je pense notamment à une ligne : print xdata, ydata ?

    Merci

    A bientôt

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 752
    Par défaut
    Salut,

    Citation Envoyé par benjame Voir le message
    Est ce possible d'afficher en direct le résultat avec un print ? je pense notamment à une ligne : print xdata, ydata ?
    vous aviez déjà des "print" dans votre code original, non?
    essayez:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def onclick(event):
        global xdata, ydata
        xdata, ydata = event.xdata, event.ydata
        print 'xdata=%f, ydata=%f' % (xdata, ydata)
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 7
    Par défaut suite ..
    Bah oui mais cela ne marchais pas encore ...Et la impossible de le refaire fonctionner correctement.
    Quand je fais tourner le code suivant, je ne récupère pas l'information contenue dans xdata et ydata... j'y suis pourtant arriver à un moment donc ça doit marcher !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    from matplotlib import pyplot as plt
     
    plt.figure()
    x=np.arange(0,20)
    y=sin(x)
    plt.plot(x,y)
     
    xdata = ydata = None
    def onclick(event):
        global xdata, ydata
        xdata, ydata = event.xdata, event.ydata
        print 'xdata=%f, ydata=%f' % (xdata, ydata)
     
    cid = fig.canvas.mpl_connect('button_press_event', onclick)
    Lorsque je tape ensuite xdata rien n'apparait ... et type xdata : none type (normal car initialisé)

    Encore merci de ton aide ! On ne doit pas en être très loin !
    A+

  6. #6
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 063
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 063
    Par défaut
    En fait il vous manque énormément de choses, en plus des imports manquants

    • numpy n'est pas importé
    • Il n'y a pas d'attribut canvas pour une "Figure"
    • np.sin(x) à la place de sin(x)
    • ...


    Bref veuillez revoir la documentation,

Discussions similaires

  1. Checkbox mouse click event distinctement de treenode m. cl. ev.
    Par Chavadam dans le forum Windows Forms
    Réponses: 0
    Dernier message: 13/08/2010, 16h00
  2. [ImageIO.read] Can't get input stream from URL!
    Par el_mosquito dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 12/09/2007, 14h55
  3. Get text from application window or other
    Par Ludo_360 dans le forum Delphi
    Réponses: 3
    Dernier message: 24/05/2007, 09h47
  4. get selected index from a select
    Par othmanbenhalima dans le forum Langage
    Réponses: 1
    Dernier message: 01/12/2006, 14h20
  5. Réponses: 2
    Dernier message: 02/12/2005, 17h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo