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

GUI Python Discussion :

Format des nombres dans les graphiques matplotlib avec usetex [Python 3.X]


Sujet :

GUI Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2025
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2025
    Messages : 4
    Par défaut Format des nombres dans les graphiques matplotlib avec usetex
    Bonjour à toutes et tous.

    Je souhaite que les nombres en abscisse et ordonnée de mes graphiques soient formatés conformément aux règles françaises, à savoir avec la virgule comme séparateur décimal et, si possible, une espace fine insécable comme séparateur des milliers. Le tout en aspect LaTeX. Voici un exemple minimal qui montre le problème que je rencontre.
    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
     
    from matplotlib import pyplot as plt
    import locale
     
    locale.setlocale(locale.LC_NUMERIC, 'fr')
    plt.rcParams.update({
        'axes.formatter.use_locale':True,
        'text.usetex': True,
        'font.family': 'Computer Modern',
        'text.latex.preamble' : r'\usepackage{icomma}',
    })
     
    plt.plot([0,200],[0,1])
    plt.show()
    plt.plot([0,1200],[0,1])
    plt.show()
    Le premier graphique est créé sans problème. La locale fr met bien la virgule comme séparateur décimal, le package LaTeX icomma évite l'espace après la virgule.
    Le deuxième graphique n'est pas créé car le séparateur décimal voulu pour les milliers, espace fine insécable, n'est pas reconnu par LaTeX. Le message d'erreur est
    ! LaTeX Error: Unicode character   (U+202F) not set up for use with LaTeX.

    J'ai essayé d'ajouter un préambule LaTeX \DeclareUnicodeCharacter{202F}{\,} par exemple, sans succès...

    Merci pour votre aide.

  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,

    Latex est une application externe à matplotlib.
    Comment configurer le point Unicode U+202F pour cette application là... n'a pas grand chose à voir avec Python et de l'aide devrait plutôt être cherchée du côte des utilisateurs developpeurs de cette application Latex.

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

  3. #3
    Membre à l'essai
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2025
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2025
    Messages : 4
    Par défaut
    Bonjour.
    Merci pour votre réponse.
    J'ai une solution qui tient bel et bien à Python et pas à LaTeX. En fait, passer plusieurs options au préambule de LaTeX ne fonctionnait pas dans mes précédents essais car je ne fournissais pas à text.latex.preamble ine chaîne.
    Voici une solution qui fonctionne.
    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
    import locale
     
    locale.setlocale(locale.LC_NUMERIC, 'fr')
    plt.rcParams.update({
        'axes.formatter.use_locale':True,
        'text.usetex': True,
        'font.family': 'Computer Modern',
        'text.latex.preamble':'\n'.join([r'\usepackage{icomma}',r'\DeclareUnicodeCharacter{202F}{\,}'])
    })
     
    plt.plot([0,200],[0,1])
    plt.show()
    plt.plot([0,1200],[0,1])
    plt.show()
    Il y en a probablement d'autres.
    Merci pour tout.

  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
    Citation Envoyé par l_c_q_ Voir le message
    J'ai une solution qui tient bel et bien à Python et pas à LaTeX.
    Déjà il faut savoir que définir ce caractère passe par l'instruction Latex "r'\DeclareUnicodeCharacter{202F}{\,}" qui va configurer le package icomma après le \usepackage{icomma}.

    Après passer ces 2 lignes là dans la définition de text.latex.preamble pourrait être un sujet Python mais ce n'est pas un problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
              'text.latex.preamble': r'\usepackage{icomma}\n\DeclareUnicodeCharacter{202F}{\,}'
    Et la question ne portait pas sur comment passer ces 2 lignes dans le préamble.

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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/09/2012, 11h38
  2. Format de nombre dans un graphique
    Par CFR01 dans le forum Powerpoint
    Réponses: 3
    Dernier message: 01/04/2010, 17h24
  3. DataTable Format des valeurs dans les cellules
    Par Neodream dans le forum C#
    Réponses: 3
    Dernier message: 04/03/2010, 11h01
  4. DataGridView et format des valeurs dans les cellules
    Par saultapt dans le forum Windows Forms
    Réponses: 5
    Dernier message: 17/06/2008, 16h55
  5. [Lazarus] Format des nombres dans TDBEdit,TDBText
    Par chlubister dans le forum Lazarus
    Réponses: 1
    Dernier message: 14/05/2007, 17h26

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