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

Bibliothèques tierces Python Discussion :

difficulté avec MatPlotLib


Sujet :

Bibliothèques tierces 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 difficulté avec MatPlotLib
    bonjour
    j'ai programmé quelques lignes pour tracer des arbres de probabilité (fin du message)
    ça marche bien sauf que :


    a) les lignes sont de mauvaise qualité quand j'ouvre l'image png
    à partir de N=8 c'est flagrant mais déjà à partir de N=5 on le voit, le zoom est catastrophique
    dans quel format pourrais-je alors exporter ?
    mon but est de pouvoir écrire dessus (à l'écran) ensuite pendant des cours en maths en ligne


    b) pourquoi j'ai deux fenêtres "fusée" qui s'ouvrent au lieu d'une ?


    c) depuis des années que je tape des petites choses en Matplotlib, je n'ai jamais vraiment compris ce que veut dire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fig, lafigure = plt.subplots(figsize=(Linch,linch))
    moi je ne veux qu'une seule figure, qui est nommée ici lafigure
    mais que représente fig ?


    -------

    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
     
    #**************** choix à faire
    N=8#nombre de niveaux de branches. Typiquement, N=2 ou N=3
    path="/Users/vincentdouce/Desktop/arbre"+str(N)+".png"
     
     
     
     
    #inversés
     
     
    #http://python-simple.com/python-matplotlib/ajout-text.php
     
    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib as mpl
     
    Np2=2**N
     
    # dimensions de la fenêtre
    xmin,xmax,ymin,ymax=-1,1,-1,1
    (L,l)=(6,4)
    Linch,linch=(L/2.54,l/2.54)
    plt.axis([xmin,xmax,ymin,ymax])
    fig, lafigure = plt.subplots(figsize=(Linch,linch))
    plt.axis('off')
     
    #calcul des positions verticales des branches de niveau maximal
    epy=0.05#espacement par rapport aux bords supérieur et inférieur
    yN=[0]*(N+1)#N+1 liste d'ordonnees
    deltay=(ymax-ymin-2*epy)/(Np2-1)
    yN[N]=[round(ymin+epy+i*deltay,2) for i in range(2**N)]#on commence larbre par la fin
    for abs in range(N-1,-1,-1):#pour chaque niveau en descendant de N-1 a 0
        yN[abs]=[0]*(2**abs)
        for yyy in range(2**abs):
            yN[abs][yyy]=round((yN[abs+1][2*yyy]+yN[abs+1][2*yyy+1])/2,2)
            #le round a cause des virgules flottantes penibles de python
    #la liste yN contient ainsi N sous-listes
    #yN[0] contient 1 ordonnee... yN[N] en contient 2**N
     
    #duplication des listes yN[i] de i=0 a i=N-1
    def dupliquer(laliste):
        longueur=len(laliste)
        LL=[x for x in laliste]#on duplique
        LL=LL+[0]*longueur#on double la taille
        for i in range(longueur):
            element=laliste[i]
            LL[2*i]=element
            LL[2*i+1]=element
        return(LL)
    yNdup=[0]*len(yN)
    for i in range(N):
        yNdup[i]=dupliquer(yN[i])
     
    #calcul des N+1 abscisses
    epx=0.05#espacement par rapport aux bords supérieur et inférieur
    xN=[0]*(N+1)
    deltax=(xmax-xmin-2*epx)/(Np2-1)
    xN=[xmin+epx+i*deltax for i in range(N+1)]
     
    for prof in range(1,N+1):
        labscissegauche=xN[prof-1]
        labscissedroite=xN[prof]
        for niv in range(2**prof):
            print([labscissegauche,labscissedroite],[yNdup[prof-1][niv],yN[prof][niv]])
            lafigure.plot([labscissegauche,labscissedroite],[yNdup[prof-1][niv],yN[prof][niv]], color ='black', linewidth=0.25, linestyle="-")    
     
     
    plt.savefig(path, dpi=288)
    plt.show()

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par elodouwen Voir le message
    moi je ne veux qu'une seule figure, qui est nommée ici lafigure
    mais que représente fig ?
    Il y a une documentation pour expliquer cela.

    Côté problème, sans un minimum de données, on ne pourra pas constater ce que vous voyez et réfléchir au pourquoi...

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

  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 image
    bonjour Christophe et merci de ta réponse
    voici une copie d'écran pour N=8
    Nom : ajbug8.jpg
Affichages : 115
Taille : 108,5 Ko
    les premières lignes sont bien nettes, fines, tandis que vers la droite elles sont vraimnet moches, floues
    est-ce dû au fait qu'elles sont plus proches de l'horizontale ?
    est-ce un phénomène à la pixellisation des tracés de droites en quelques sortes
    ou bien est-ce que ça vient de matplotlib ? ou de mon programme ?

Discussions similaires

  1. [SSIS][2k5]Difficulté avec SSIS
    Par david71 dans le forum SSIS
    Réponses: 9
    Dernier message: 05/01/2006, 19h28
  2. [JS] Difficulté avec le onmouseover...
    Par Pleymo dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 26/11/2005, 12h09
  3. [VBA] difficultés avec une requête INSERT
    Par elias dans le forum Access
    Réponses: 7
    Dernier message: 06/09/2005, 14h53
  4. Difficultés avec - onchange - !
    Par zakuli dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 20/07/2005, 12h00
  5. Difficultés avec TMenuItem.OnDrawItem
    Par ybruant dans le forum Composants VCL
    Réponses: 4
    Dernier message: 12/01/2005, 11h07

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