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 :

matplotlib modifier attribut graph


Sujet :

Calcul scientifique Python

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut matplotlib modifier attribut graph
    Bonjour tous,

    je cherche à faire avec matplotlib une figure dont toutes les caractéristiques générales puissent être modifiées indépendamment (taille de légende, grosseur axes, mise en gras des valeurs sur les axes, couleur de bordure...)

    J'ai un code qui me plait déjà pas mal (cf. en bas du message) mais il y a plusieurs choses que je n'arrive pas encore à faire :

    1\ je souhaite enlever le cadre qu'il y a autour de la légende

    2\ je souhaite modifier la taille (+ mettre en gras) les valeurs numériques sur les axes et la celle du texte dans la légende

    3\ je souhaite modifier la taille des marqueurs.

    C'est des choses surement très simple mais je n'arrive pas à m'adapter à logique de l'aide de matplotlib :euh: sous matlab je mets pas exemple un mot clef et j'ai une description est un exemple, ici avec cette librairie je trouve plein de mots clefs mais je ne trouve pas forcement une descroptions détaillé avec un exemple à chaque fois (ou je regarde pas la doc au bon endroit....)

    Pourriez vous me dire comment faire ces petites choses, ensuite je regarderai si je trouve vos commandes dans la doc et j'essaierai de mieuxm'y habituer.

    je vous remercie,

    bonne journée

    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
    #!/usr/bin/python
    # -*- coding: utf8 -*-
    import numpy as np
    import matplotlib.pyplot as plt
    x1=np.linspace(0,1,50)
    x2=np.linspace(0,1,50)
    y1=5.0*(1.0-np.exp(-3*x1))
    y2=5.0*(1.0-np.exp(-13*x2))
    fig1=plt.figure(1)
    # 1
    ax=fig1.add_axes([0.1, 0.1, 0.8, 0.8])
    ax.spines['top'].set_linewidth(1.9)
    ax.spines['top'].set_color("blue")
    ax.spines['bottom'].set_linewidth(1.5)
    ax.spines['bottom'].set_color("red")
    # 2
    ax.plot(x1,y1,'ko-',label=r"$y_1=\alpha$")
    ax.plot(x2,y2,'gx-',label=r"$y_2=\beta$")
    ax.grid(True)
    # 3
    ax.set_xlabel(r'$\alpha$',fontsize=20)
    ax.set_ylabel(r'$le_y$',fontsize= 20)
    ax.set_title(r'$title$',fontsize= 20)
    ax.legend(loc='lower right')
    plt.show()

  2. #2
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    Salut,

    Oui pas evident de personaliser matplotlib. Personnellement je fais soit une recherche sur google (il y a de forte chances que la réponse traine sur stackoverflow), soit dans google image, soit je parcours tous les exemples fournis sur le site de matplotlib en espérant trouver ce que je cherche.

    Je peux te répondre aux deux premiers points seulement (eh c'est déjà pas mal). Tu peux customiser matplotlib en passant par rc ou rcParams. Attention toutefois, le changement des paramètres par ce biais est persisitent: ça impact les futurs graphs. En somme c'est comme changer un fichier de configuration. Je n'aime pas cette methode, mais libre à toi de passer par là.

    J'ai rajouté 2/3 lignes à la fin du code:
    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
    #!/usr/bin/python
    # -*- coding: utf8 -*-
    import numpy as np
    import matplotlib.pyplot as plt
     
    x1=np.linspace(0,1,50)
    x2=np.linspace(0,1,50)
    y1=5.0*(1.0-np.exp(-3*x1))
    y2=5.0*(1.0-np.exp(-13*x2))
    fig1=plt.figure(1)
    # 1
    ax=fig1.add_axes([0.1, 0.1, 0.8, 0.8])
    ax.spines['top'].set_linewidth(1.9)
    ax.spines['top'].set_color("blue")
    ax.spines['bottom'].set_linewidth(1.5)
    ax.spines['bottom'].set_color("red")
    # 2
    ax.plot(x1, y1, 'ko-', label=r"$y_1=\alpha$")
    ax.plot(x2, y2, 'gx-', label=r"$y_2=\beta$")
    ax.grid(True)
    # 3
    ax.set_xlabel(r'$\alpha$',fontsize=20)
    ax.set_ylabel(r'$le_y$',fontsize= 20)
    ax.set_title(r'$title$',fontsize= 20)
    ax.legend(loc='lower right')
     
    # Additional tricks
    plt.rcParams['legend.frameon'] = False
    plt.rc('font', weight='bold')
    plt.rc('xtick', labelsize=30)
    plt.rc('ytick', labelsize=30)
     
    plt.show()

    Je ne sais pas comment remettre par defaut les paramètres, donc attention aux manipulations hasardeuses.

    [EDIT]
    Si tu veux essayer les paramètres ci-dessus en toute sécurité, il te suffit de passer à True le frameon, le poids de la police à normal et la taille des caractères à 10 pour revenir à la normal.

    [EDIT]
    Si tu n'as pas le choix et dois passer par rcParams, tu peux lister l'ensemble des paramètres facilement comme ceci:
    Tu peux donc soit sauvegarder quelque part avant toute modification l'ensemble des clés et valeurs par defaut. Ou même enregister ce dictionnaire quelque part avec json par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import json
    with open('C:\Users\Desktop\Defaut_plt.txt', 'w') as f:
        json.dump(plt.rcParams, f, indent=4)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    with open('C:\Users\Desktop\Defaut_plt.txt', 'r') as f:
        plt.rcParams = json.load(f)
    En regardant de plus les parameters j'ai trouvé comment changer la taille des marqueurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plt.rcParams['lines.markersize'] = 6


    Ju

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    merci Julien,
    je vais regardé ce que j'arrive à faire en continuant à fouillant la doc (que je commence à comprendre un peu) et si je n'arrive pas avec les méthodes "set"...Etc
    je passerai par cette solution.
    merci en tout cas et bonne journée

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

Discussions similaires

  1. Modifier le graph polar
    Par lapinta dans le forum MATLAB
    Réponses: 1
    Dernier message: 25/04/2008, 12h45
  2. [DOM] DOM - modifier attributs balise IMG
    Par on dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 27/08/2007, 17h15
  3. [POO] Modifier attributs d'un objet par référence
    Par justSam dans le forum Langage
    Réponses: 8
    Dernier message: 22/02/2007, 07h58
  4. modifier attribut checked bouton radio
    Par calitom dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 27/11/2006, 21h15
  5. [FICHIERS] Modifier Attributs de fichier
    Par sbeu dans le forum Langage
    Réponses: 6
    Dernier message: 30/04/2003, 10h57

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