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 :

Questions divers Matplotlib


Sujet :

Calcul scientifique Python

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Points : 10
    Points
    10
    Par défaut Questions divers Matplotlib
    Bonjour à tous,

    J'ai récemment découvert Matplotlib et je dois avouer que je suis conquis (d'autant plus que j'utilisais Matlab avant pour tracer mes courbes). De plus, l'utilisation de TeX me permet enfin de faire ce que je veux. Globalement, je réussis à faire ce que je veux mais il me reste encore 2-3 "bricoles" à résoudre. Et je n'y arrive pas .

    Pour mon boulot, j'ai un grand nombre de courbes à tracer. Ces courbes sont ensuite importées dans des rapports et/ou présentations. Je voudrais donc que chacun de mes graphes ait la même taille (jusque là, c'est trivial!) et que la taille des polices soit homogène avec celle du corps du rapport.

    Dans un premier temps, j'ai conservé les dimensions "standard" de Matplotlib (8 inches * 6 inches). J'ai ensuite modifié la tailles des différentes polices pour qu'elles soient homogènes avec le reste du texte. Le soucis, c'est que les "labels" se chevauchent à l'origine. Et nous sommes bien d'accord, ce n'est pas très élégant!! J'ai ensuite pensé, pour contourner ce problème, à modifier les dimensions de mes graphes avec la commande fig_size de façon à pouvoir les incorporer telle quelle (i.e. en utilisant une échelle de 1). Quand je fais ça tout fonctionne à merveille, sauf quand j'enregistre mon image en .png. Elle est en effet rognée à gauche et en bas (au niveau des xlabel et ylabel) et est inexploitable. Je ne sais vraiment pas d'où cela peut venir, d'autant plus que ce rognagne est beaucoup moins marqué lorsque j'utilise une sortie .eps. Je peux donc tracer de belles courbes... mais que je ne peux pas exploiter.

    Quelques essais m'ont permis de voir que si on modifie les dimensions standard des graphes générés par Matplotlib, la sortie .png est systématiquement rognée. Quelqu'un à t'il déjà été confronté à ce problème? Et surtout, comment le résoudre .

    Merci beaucoup!

    Bonne fin de journée

    Vincent

    PS : j'utilise la version 0.91-2.2 de Matplotlib sous Linux (si ça peut aider...)

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    J'ai aussi eu le problème pour une publication. En fait, tu génères ton image, tu la sauvegardes en eps, puis tu modifies l'eps avec un logiciel adapté (mais je ne sais pas lequel a été utilisé dans mon cas, c'est l'éditeur qui s'en est chargé ).

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Effectivement, c'est une solution... mais qui n'est pas forcément adaptée pour de la production de graphiques en masse... Je pense que le plus simple reste d'utiliser les paramètres standards de Matplotlib (comme ça pas de problème) et de voir au cas par cas les graphes qui serviront pour des rapports/présentations.

    Au passage, comment peut -on modifier un eps? J'ai essayé de la faire avec Inkscape, mais l'importation ne se fait pas correctement (les lettres "creuses", comme le 0 par exemple sont coloriées en noir)...

    Autre petit problème : lorsque j'utilise la sortie .eps avec l'option grid=True, la "grid" est n'est pas alignée avec les graduations principales. Avez-vous également ce problème et comment le régler?

    Lorsque j'utilisais Gnuplot, il y avait une commande que je trouvais fantastique qui permettait de générér des graduations secondaires facilement. Il suffisait de mettre par exemple mxtics=5 pour avoir 4 graduations secondaires entre 2 graduations principales. Je n'ai pas trouvé de commande équivalente sous Matplotlib. Est t'il quand même possible d'ajouter des graduations sexondaires aussi facilement?

    Enfin, dernière petite question (très conne mais bon) : comment peut-on utiliser des accents pour les titres et label sans utiliser le paramètre usetex=True? Il me remplace les lettres avec des accents avec des carrés blancs sans ce paramètre...

    Merci beaucoup et désolé pour toutes ces questions (ça fait quelques jours que je cherche en vain des réponses à ces questions, alors je fais appel à vous!)

    Bonne journée

    Vincent

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par Boozer Voir le message
    Effectivement, c'est une solution... mais qui n'est pas forcément adaptée pour de la production de graphiques en masse... Je pense que le plus simple reste d'utiliser les paramètres standards de Matplotlib (comme ça pas de problème) et de voir au cas par cas les graphes qui serviront pour des rapports/présentations.
    Je n'ai pas trouvé comment faire ça proporement. J'ai déjà eu du ma à trouver comment ne pas avoir des axes allant de 0 à 9000000 avec des pas de 1000000 (pas de factorisation en 10^6 )
    Citation Envoyé par Boozer Voir le message
    Au passage, comment peut -on modifier un eps? J'ai essayé de la faire avec Inkscape, mais l'importation ne se fait pas correctement (les lettres "creuses", comme le 0 par exemple sont coloriées en noir)...
    Aucune idée de a part
    Citation Envoyé par Boozer Voir le message
    Enfin, dernière petite question (très conne mais bon) : comment peut-on utiliser des accents pour les titres et label sans utiliser le paramètre usetex=True? Il me remplace les lettres avec des accents avec des carrés blancs...
    Passer par de l'unicode (c'est ce que j'utilise, Latex ne passe pas chez moi, il doit me manquer un truc quelque part). Mais il faut utiliser la version qui va venir (0.91.3) pour réussir à sauvegarder si tu utilises wxPython comme backend.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Je n'avais pas pensé voir du coté de l'unicode pour les accents (et pourtant, c'est évident quand j'y réfléchit!). Pour que ça marche, j'ai ajouté 'text.latex.unicode' : True dans mes paramètres rc (en conservant 'text.usetex' : True) et ça marche niquel! Merci! Pas d'autres avis sur les questions toujours sans réponses???

    Pour ma culture, comment as-tu réussi à gérer tes axes dans l'exemple que tu as évoqué?

    Vincent

  6. #6
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Après recherche dans mes mails, j'ai utilisé un changement dans le rcParams :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rcParams['axes.formatter.limits']=[-4,4]

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Merci! C'est toujours bon à savoir...

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Bonsoir à tous,

    J'ai une nouvelle question concernant Matplotlib (encore, décidement!!!). En fait, je voulais savoir s'il était possible de décaler les différentes échelles du graphique. Je les trouve un peu trop proche du graphique, ce qui fait que les échelles des abscisses et des ordonnées ont la facheuse tendance à se toucher à l'origine. Je n'ai pas réussi à trouver comment faire dans la doc...

    Merci beaucoup et bonne fin de soirée

  9. #9
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2012
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Boozer Voir le message
    Elle est en effet rognée à gauche et en bas (au niveau des xlabel et ylabel) et est inexploitable. Je ne sais vraiment pas d'où cela peut venir, d'autant plus que ce rognagne est beaucoup moins marqué lorsque j'utilise une sortie .eps. Je peux donc tracer de belles courbes... mais que je ne peux pas exploiter.
    Bonjour,

    J'ai également eu ce problème de figure rognée, notamment lorsque je spécifiait de petites tailles.

    J'ai trouvé une solution qui m'a convenu en jouant sur les paramètres top, bottom, right et left de la figure. Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fig = plt.figure()
    fig.subplots_adjust(bottom=0.2)
    ax = fig.add_subplot(111)
    J'imagine que depuis le temps ça n'intéresse plus les personnes ci dessus, mais ça servira peut-être aux personnes qui sont tombées sur ce sujet comme moi.

    Amine

Discussions similaires

  1. Questions divers (cookie vs session)
    Par redah75 dans le forum Langage
    Réponses: 45
    Dernier message: 07/10/2010, 09h04
  2. Question divers opengl
    Par choko83 dans le forum OpenGL
    Réponses: 3
    Dernier message: 24/05/2009, 23h27
  3. Réponses: 18
    Dernier message: 02/06/2008, 22h20
  4. Réponses: 6
    Dernier message: 15/03/2007, 10h29
  5. Questions Divers sur un PFE à Paris
    Par Mehdi Feki dans le forum Stages
    Réponses: 9
    Dernier message: 03/11/2006, 20h20

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