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 : blanc autour de l'image


Sujet :

Calcul scientifique Python

  1. #1
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 406
    Points : 92
    Points
    92
    Par défaut matplotlib : blanc autour de l'image
    bonjour
    voici mon programme, bâti au fil du temps à partir de bouts de code trouvés, bricolés…
    je ne comprend pas tous les détails mais je m'en sers souvent pour toutes mes courbes
    les détails que je n'arrive pas à régler aujourd'hui c'est :
    - comment supprimer les petites graduations ?
    - comment supprimer le cadre gris ?
    - et surtout : comment éviter le blanc autour de la figure ?
    si vous avez quelques tuyaux cela me rendra bien service
    merci !
    vinz

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib as mpl
    from math import *
    import os#pour le chemin
    from matplotlib import patches
    import numpy as np
     
    #-------------
    nom="convexite_1.png" #!!! penser à changer ¡¡¡
    #-------------
     
    # paramètres à choisir
    (L,l)=(4.5,3)#largeur, hauteur
    xmin,xmax=-2,2
    y0=0.3#centre vertical du repère
    echelle=1#taille en cm de l'unite a l'ecran
    pas=pi/10#tous les combien (en x comme en y) on met des vecteurs
    eps_vecteur=0.25#longueur d'une fleche unitaire en carreaux.
     
    # fonction
    m=0.9
    def f(x):
    	return(x**2/2+x**3/5+0.5)
     
    # -----------------------------------
     
    # modules
     
     
     
    # quelques paramètres par défaut
    plt.style.use('bmh') # pour la police des équations
    plt.rcParams["font.size"] = 10
    plt.rcParams['axes.facecolor'] = "white" # font blanc pour les graphiques (bmh met du gris)
     
    # calcul automatique axe Y
    rapport=L/l
    demideltay=(xmax-xmin)/rapport/2
    ymin,ymax=y0-demideltay,y0+demideltay
     
    # définition de la figure + divers paramètres
    alpha = echelle/9.5*(xmax-xmin)#valeur determinee empiriquement
    Linch,linch=(L*alpha,l*alpha)
    fig, lafigure = plt.subplots(figsize=(Linch,linch))
    lafigure.set_visible
    fig.tight_layout()  # to nicely fit the subplot(s) in the figure
    lafigure.axis([xmin,xmax,ymin,ymax]) # permet que si qqch dépasse ça ne perturbe rien
    lafigure.grid(False)
     
    #graduations automatiques
    Lx=np.arange(int(xmin), int(xmax)+1, 1)
    Ly=np.arange(int(ymin), int(ymax)+1, 1)
    Lxmot=['' % x for x in Lx]
    Lymot=['' % y for y in Ly]
    plt.xticks(Lx, Lxmot)
    plt.yticks(Ly, Lymot)
     
    # axes
    lafigure.plot([0,0],[ymin,ymax], color ='black', linewidth=0.5, linestyle="-")
    lafigure.plot([xmin,xmax],[0,0], color ='black', linewidth=0.5, linestyle="-")
     
    couleur="#005500"
     
    (a,b)=(-1,1)
    lafigure.plot([a,b],[f(a),f(b)], color =couleur, linewidth=0.25, linestyle="-")
     
     
    # fonctions à tracer f(X)
    ep=0.25
    lacouleur='#AA44CC'
    X1 = np.linspace(xmin,xmax, 256,endpoint=True)
    Y1 = f(X1)
    lafigure.plot(X1, Y1, color="black", linewidth=ep, linestyle="-")
     
    def pointilles(x,y):
        #trace les pointilles du point (x,y)
        lafigure.plot([x,x], [y,0], color="black", linewidth=ep, linestyle="--")
        lafigure.plot([x,0], [y,y], color="black", linewidth=ep, linestyle="--")
     
     
    pointilles(a,f(a))
    pointilles(b,f(b))
     
    delta=0.0
    lafigure.annotate(r'$a$',
                 xy=(a,-0.2), 
                 ha='center', va='center',
                 #xytext=(echx, echy+0.3), 
                 arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"),
                 transform=fig.transFigure)
     
    lafigure.annotate(r'$b$',
                 xy=(b,-0.2), 
                 ha='center', va='center',
                 #xytext=(echx, echy+0.3), 
                 arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"),
                 transform=fig.transFigure)
     
     
    # enregistrement
     
    chemin=os.path.abspath(os.getcwd())#va enregistrer dans le dossier courant`
    print(chemin+nom)
    plt.savefig(chemin+"/"+nom, dpi=288)
    plt.show()
    Images attachées Images attachées  

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 824
    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 : 3 824
    Points : 7 120
    Points
    7 120
    Par défaut
    Bonjour,

    Toutes vos questions font référence à une figure qu'on ne voit pas... et après indiqué ce que vous appelez petites graduations et blanc autour de la figure.

    Voici une proposition,

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    import numpy as np
    import matplotlib.pyplot as plt
    import os
     
     
    # Paramètres
    nom = "convexite_1.png"
    (L, l) = (4.5, 3)  # Largeur, hauteur
    xmin, xmax = -2, 2
    y0 = 0.3  # Centre vertical du repère
     
     
    # Fonction
    def f(x):
        return x**2 / 2 + x**3 / 5 + 0.5
     
     
    # Style et paramètres par défaut
    plt.style.use('bmh')
    plt.rcParams["font.size"] = 10
    plt.rcParams['axes.facecolor'] = "white"
     
     
    # Calcul automatique axe Y
    rapport = L / l
    demideltay = (xmax - xmin) / rapport / 2
    ymin, ymax = y0 - demideltay, y0 + demideltay
     
     
    # Figure et axes
    fig, lafigure = plt.subplots(figsize=(L, l))
    fig.tight_layout()
    lafigure.axis([xmin, xmax, ymin, ymax])
    lafigure.grid(False)
    lafigure.set_facecolor("none")  # Supprimer le fond de l'axe
     
     
    # Suppression des graduations
    plt.xticks([])
    plt.yticks([])
     
     
    # Axes
    lafigure.plot([0, 0], [ymin, ymax], color='black', linewidth=0.5)
    lafigure.plot([xmin, xmax], [0, 0], color='black', linewidth=0.5)
     
     
    # Tracé de la fonction
    X1 = np.linspace(xmin, xmax, 256, endpoint=True)
    Y1 = f(X1)
    lafigure.plot(X1, Y1, color="black", linewidth=1)
     
     
    # Points a et b
    a, b = -1, 1
    lafigure.plot([a, a], [f(a), 0], color="black", linewidth=1, linestyle="--")
    lafigure.plot([b, b], [f(b), 0], color="black", linewidth=1, linestyle="--")
    lafigure.plot([a, b], [f(a), f(b)], color="green", linewidth=1)
     
     
    # Annotations pour 'a' et 'b'
    lafigure.annotate(r'$a$', xy=(a, 0), xytext=(a, -0.2), ha='center', va='center',
                      arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
    lafigure.annotate(r'$b$', xy=(b, 0), xytext=(b, -0.2), ha='center', va='center',
                      arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
     
     
    # Enregistrement de la figure sans espace blanc autour
    chemin = os.path.abspath(os.getcwd())
    plt.savefig(os.path.join(chemin, nom), dpi=288, bbox_inches='tight')
    plt.show()
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 406
    Points : 92
    Points
    92
    Par défaut
    merci Fred
    désolé pour l'image oubliée, je viens de modifier mon post original
    j'ai épluché votre code et vous me suggérez deux instructions qui fonctionnent très bien
    dans le plt.savefig pour enlever le blanc autour et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    plt.xticks([])
    plt.yticks([])
    pour supprimer les graduations
    merci à vous c'est exactement la réponse à ma question
    si jamais vous savez comment supprimer le cadre autour ce sera génial…
    Vinz

  4. #4
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 824
    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 : 3 824
    Points : 7 120
    Points
    7 120
    Par défaut
    Bonjour,

    Je pense que vous souhaitez supprimer les "spines", il suffit alors d'ajouter ce bloc après le bloc "Figure et axes"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    # Suppression des 'spines'
    for spine in lafigure.spines.values():
        spine.set_visible(False)
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  5. #5
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 406
    Points : 92
    Points
    92
    Par défaut
    Un grand merci Fred ça marche parfaitement
    Vinz

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/04/2012, 17h29
  2. cadre blanc autour d'une image
    Par totooo dans le forum Imagerie
    Réponses: 7
    Dernier message: 23/07/2009, 08h37
  3. Suppression de cadre autour d'une image qui sert de lien
    Par vasilov dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 03/04/2005, 13h02
  4. [HTML]Texte autour d'une image
    Par JiJiJaco dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 23/02/2005, 14h35
  5. Texte autour d'une image
    Par C.M dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 08/12/2004, 10h16

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