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

Python Discussion :

Mise a jour d’une figure Matplotlib sous macOS


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de Le Farfadet Spatial
    Homme Profil pro
    En cours de précision…
    Inscrit en
    Avril 2008
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : En cours de précision…

    Informations forums :
    Inscription : Avril 2008
    Messages : 190
    Par défaut Mise a jour d’une figure Matplotlib sous macOS
    Salut à tous !

    Je tente de réaliser des figures interactives avec Matplotlib. Soit le code suivant, qui permet de faire apparaître ou disparaître une courbe lorsqu’on clique sur la ligne de sa légende (il faut bien cliquer sur la ligne) – en passant, ce code n’est pas de moi :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
     
    import numpy as np
    import matplotlib.pyplot as plt
     
     
    t = np.linspace(0, 1)
    y1 = 2 * np.sin(2*np.pi*t)
    y2 = 4 * np.sin(2*np.pi*2*t)
     
    fig, ax = plt.subplots()
    ax.set_title('Click on legend line to toggle line on/off')
    line1, = ax.plot(t, y1, lw=2, label='1 Hz')
    line2, = ax.plot(t, y2, lw=2, label='2 Hz')
    leg = ax.legend(fancybox=True, shadow=True)
     
    lines = [line1, line2]
    lined = {}  # Will map legend lines to original lines.
    for legline, origline in zip(leg.get_lines(), lines):
        legline.set_picker(True)  # Enable picking on the legend line.
        lined[legline] = origline
     
     
    def on_pick(event):
        # On the pick event, find the original line corresponding to the legend
        # proxy line, and toggle its visibility.
        legline = event.artist
        origline = lined[legline]
        visible = not origline.get_visible()
        origline.set_visible(visible)
        # Change the alpha on the line in the legend so we can see what lines
        # have been toggled.
        legline.set_alpha(1.0 if visible else 0.2)
        fig.canvas.draw()
     
    fig.canvas.mpl_connect('pick_event', on_pick)
    plt.show()
    J’ai testé ce code sous Linux et il fonctionne comme attendu. Il m’a été rapporté qu’il fonctionne également sous Windows.

    En revanche, le comportement sous macOS est étrange : lorsque l’on clique sur la ligne de légende, la courbe ne disparaît pas, mais en revanche, si on change la taille de la fenêtre, alors la courbe disparaît. Il semble que le graphique n’est pas mis à jour. Je dois avoir oublié quelque chose – encore que je ne comprends pas vraiment la différence de comportement entre les systèmes, mais passons. J’ai cherché sur le net et je n’ai rien trouvé pour m’aider. Est-ce que quelqu’un sait comment corriger ce problème ?

    À bientôt.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    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 738
    Par défaut
    Salut,

    Citation Envoyé par Le Farfadet Spatial Voir le message
    Est-ce que quelqu’un sait comment corriger ce problème ?
    Commencez par valider la version de Tk utilisée sous OSX sinon faites une mise à jour.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre éclairé
    Avatar de Le Farfadet Spatial
    Homme Profil pro
    En cours de précision…
    Inscrit en
    Avril 2008
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : En cours de précision…

    Informations forums :
    Inscription : Avril 2008
    Messages : 190
    Par défaut
    Merci pour la réponse.

    Si je suis très habitué à Linux, je dois reconnaître que je découvre macOS, je ne suis pas encore à l’aise – et, bon, je préfère Linux, mais passons.

    Donc, je ne suis pas très sûr, mais, d’après le lien donné, il me semble qu’il me faut la version 8.6.11 ou supérieure de TCL/TK. Or, il me semble que c’est la version 8.6.12 qui est installée sur mon système :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    % tclsh
    % info patchlevel
    8.6.12
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    % brew info tcl-tk
    ==> tcl-tk: stable 8.6.12 (bottled) [keg-only]
    Tool Command Language
    https://www.tcl-lang.org
    /opt/homebrew/Cellar/tcl-tk/8.6.12_1 (3,045 files, 52MB)
      Poured from bottle on 2022-06-21 at 11:15:31
    From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/tcl-tk.rb
    License: TCL
    ==> Dependencies
    Required: openssl@1.1 ✔
    ==> Caveats
    The sqlite3_analyzer binary is in the `sqlite-analyzer` formula.
     
    tcl-tk is keg-only, which means it was not symlinked into /opt/homebrew,
    because macOS already provides this software and installing another version in
    parallel can cause all kinds of trouble.
     
    If you need to have tcl-tk first in your PATH, run:
      echo 'export PATH="/opt/homebrew/opt/tcl-tk/bin:$PATH"' >> ~/.zshrc
     
    For compilers to find tcl-tk you may need to set:
      export LDFLAGS="-L/opt/homebrew/opt/tcl-tk/lib"
      export CPPFLAGS="-I/opt/homebrew/opt/tcl-tk/include"
     
    For pkg-config to find tcl-tk you may need to set:
      export PKG_CONFIG_PATH="/opt/homebrew/opt/tcl-tk/lib/pkgconfig"
     
    ==> Analytics
    install: 70,464 (30 days), 221,481 (90 days), 1,974,934 (365 days)
    install-on-request: 11,479 (30 days), 39,115 (90 days), 289,032 (365 days)
    build-error: 163 (30 days)
    Après, je reconnais que je ne suis pas très certain de l’installation de Python que j’ai faite : j’ai utilisé l’installateur en provenance de python.org, mais j’ai l’impression d’avoir un mélange avec HomeBrew :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    % ls /opt/homebrew/bin/python3*
    /opt/homebrew/bin/python3		/opt/homebrew/bin/python3.10-config
    /opt/homebrew/bin/python3-config	/opt/homebrew/bin/python3.9
    /opt/homebrew/bin/python3.10		/opt/homebrew/bin/python3.9-config
     
    % ls /usr/local/bin/python3*
    /usr/local/bin/python3			/usr/local/bin/python3.10
    /usr/local/bin/python3-config		/usr/local/bin/python3.10-config
    /usr/local/bin/python3-intel64		/usr/local/bin/python3.10-intel64

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    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 738
    Par défaut
    Salut,

    La version installée sur le système, c'est bien mais il faut s'assurer que c'est aussi la version utilisée par Python avec des commandes (python) du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> import tkinter
    >>> tcl = tkinter.Tcl()
    >>> print(tcl.call("info", "patchlevel"))
    8.6.9
    >>>
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre éclairé
    Avatar de Le Farfadet Spatial
    Homme Profil pro
    En cours de précision…
    Inscrit en
    Avril 2008
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : En cours de précision…

    Informations forums :
    Inscription : Avril 2008
    Messages : 190
    Par défaut
    Je pense que la version chargée est la bonne dans les deux cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    % /opt/homebrew/bin/python3
    Python 3.10.6 (main, Aug 11 2022, 13:36:31) [Clang 13.1.6 (clang-1316.0.21.2.5)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import tkinter
    >>> tcl = tkinter.Tcl()
    >>> print(tcl.call("info", "patchlevel"))
    8.6.12
    >>> exit()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    % /usr/local/bin/python3
    Python 3.10.5 (v3.10.5:f377153967, Jun  6 2022, 12:36:10) [Clang 13.0.0 (clang-1300.0.29.30)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import tkinter
    >>> tcl = tkinter.Tcl()
    >>> print(tcl.call("info", "patchlevel"))
    8.6.12
    >>> exit()

  6. #6
    Membre éclairé
    Avatar de Le Farfadet Spatial
    Homme Profil pro
    En cours de précision…
    Inscrit en
    Avril 2008
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : En cours de précision…

    Informations forums :
    Inscription : Avril 2008
    Messages : 190
    Par défaut
    J’imagine que s’il n’y a plus de réponse, c’est que personne n’a quelque chose à proposer, mais à tout hasard, je tente de relancer une dernière fois la discussion.

    Il ne semble pas que le problème vienne de la version de TCL/TK. Est-ce que quelqu’un aurait une piste pour résoudre le problème ?

Discussions similaires

  1. Problème de mise a jour de driver vidéo sous Ubuntu.
    Par shadock0 dans le forum Matériel
    Réponses: 5
    Dernier message: 29/03/2012, 16h35
  2. Mise à jour d’une matrice sous Word
    Par diarise dans le forum Word
    Réponses: 10
    Dernier message: 09/04/2010, 17h44
  3. Mise A Jour Avec Des Dates Sous Access
    Par jo001 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/05/2007, 15h55
  4. Req mise a jour de ligne en ligne ds sous form
    Par martonpylon12 dans le forum IHM
    Réponses: 4
    Dernier message: 20/06/2005, 19h00
  5. mise a jours des données sous access
    Par puyopuyo dans le forum ASP
    Réponses: 4
    Dernier message: 25/05/2004, 12h46

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