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

Python Discussion :

Problème diagramme barre qui se superpose [Python 3.X]


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2022
    Messages : 7
    Points : 8
    Points
    8
    Par défaut Problème diagramme barre qui se superpose
    Bonjour, j'aimerais afficher plusieurs diagrammes en barre de manière dynamique, le problème que je rencontre c'est qui s'affiche de manière superposer et je ne sais pas comment faire pour les séparer

    fonction pour générer un diagramme en barre
    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
     
    def distogrameEMParAnnee(Dannee,nomProjet):
        mois=[1,2,3,4,5,6,7,8,9,10,11,12]
        tabEMois = Dannee.loc[Dannee["projet"] == nomProjet,['etape','mois']]
        i=0
        while(i<=12):
            namespace['tabEMois%d' % i] = Dannee.loc[(Dannee['projet'] == nomProjet) & (Dannee['mois'] == i),['etape']]
            namespace['nbEtapeParMois%d' % i] = namespace['tabEMois%d' % i].size
            i=i+1
        etapeParMois=[nbEtapeParMois1,nbEtapeParMois2,nbEtapeParMois3,nbEtapeParMois4,nbEtapeParMois5,nbEtapeParMois6,nbEtapeParMois7,nbEtapeParMois8,nbEtapeParMois9,nbEtapeParMois10,nbEtapeParMois11,nbEtapeParMois12]
        plt.bar(mois, etapeParMois)
        plt.xlabel("mois")  
        plt.ylabel("Etape par mois") 
        plt.style.use('seaborn')
        plt.show
    fonction pour les afficher
    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
     
    def infoPourUnProjetSurDesAnnee(DanneeInf, DanneeSupp ,nomProjet):
        #Affichage globale
        infoGlobal(DanneeInf,DanneeSupp,nomProjet)
        #affichage par année
        i=0
        DanneeInf=DanneeInf-1
        while DanneeInf < DanneeSupp :
            DanneeInf = DanneeInf+1
            print(" ")
            print(str(DanneeInf) + " : " )
            print(" ")
            infoPourUnProjetAnnee(namespace['D%d' % DanneeInf], nomProjet)
            i=i+1
            distogrameEMParAnnee(namespace['D%d' % DanneeInf],nomProjet)
    Voici l'affichage on peut voir que les diagrammes sont superposés il y en a 4 et en plus de sa sur chaque mois nous devrions avoir 4 couleurs mais nous n'en voyont que 2 par exemple sur le premier mois ce qui n'est pas normal.
    Nom : Capture d’écran 2022-05-19 130940.png
Affichages : 93
Taille : 11,3 Ko

    Merci d'avance pour le temps que vous allez consacrer pour m'aider à résoudre le problème

  2. #2
    Membre émérite

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Points : 2 328
    Points
    2 328
    Par défaut
    Salut

    Il faudrait que vous nous construisiez un petit dataframe d'exemple à la main, pour qu'on puisse avoir un code testable chez nous.

    Difficile d'avoir une idée sans tester, mais peut être qu'un plt.clear() avant chaque tracé pourrait résoudre le problème.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2022
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Je vais voir si j'arrive a créer quelque chose que vous pouvez exécuter, mais j'ai essayer le plt.clear() mais cela renvoie l'erreur AttributeError: module 'matplotlib.pyplot' has no attribute 'clear' alors que j'ai bien import matplotlib.pyplot as plt

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2022
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par lg_53 Voir le message
    Salut

    Il faudrait que vous nous construisiez un petit dataframe d'exemple à la main, pour qu'on puisse avoir un code testable chez nous.

    Difficile d'avoir une idée sans tester, mais peut être qu'un plt.clear() avant chaque tracé pourrait résoudre le problème.
    Ce code est exécutable a condition de télécharger les deux document excel que je vous transmet qui corresponde au donnée, il faut impérativement mettre les fichier excel a la source 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
    34
    35
    36
    37
    38
    39
     
    %matplotlib inline
    import pandas as pd
    import matplotlib.pyplot as plt
    import seaborn as sns
    import glob
    import numpy as np
     
    #récupération des données
    namespace = globals()
    date_Debut=2017
    date_Fin=2016
    for i in sorted(glob.glob("*.xlsx")):
        print(i)
        date_Fin=date_Fin+1
        namespace['test%d' % date_Fin] = pd.read_excel(io=i, sheet_name=0,header=0)
     
    def distogrameEMParAnnee(Dannee,nomProjet):
        mois=[1,2,3,4,5,6,7,8,9,10,11,12]
        tabEMois = Dannee.loc[Dannee["projet"] == nomProjet,['etape','mois']]
        i=0
        while(i<=12):
            namespace['tabEMois%d' % i] = Dannee.loc[(Dannee['projet'] == nomProjet) & (Dannee['mois'] == i),['etape']]
            namespace['nbEtapeParMois%d' % i] = namespace['tabEMois%d' % i].size
            i=i+1
        etapeParMois=[nbEtapeParMois1,nbEtapeParMois2,nbEtapeParMois3,nbEtapeParMois4,nbEtapeParMois5,nbEtapeParMois6,nbEtapeParMois7,nbEtapeParMois8,nbEtapeParMois9,nbEtapeParMois10,nbEtapeParMois11,nbEtapeParMois12]
        plt.bar(mois, etapeParMois)
        plt.xlabel("mois")  
        plt.ylabel("Etape par mois") 
        plt.style.use('seaborn')
        plt.show
     
    def infoPourUnProjetSurDesAnnee(DanneeInf, DanneeSupp ,nomProjet):
        DanneeInf=DanneeInf-1
        while DanneeInf < DanneeSupp :
            DanneeInf = DanneeInf+1
            distogrameEMParAnnee(namespace['test%d' % DanneeInf],nomProjet)
     
    infoPourUnProjetSurDesAnnee(2017,2018,'henri')
    Fichiers attachés Fichiers attachés

  5. #5
    Membre émérite

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Points : 2 328
    Points
    2 328
    Par défaut
    Merci pour cet exemple.
    Vous auriez pu googliser la piste que je vous ai donnée, vous seriez rapidemment tombé sur plt.clf() (clf, pour clear figure), qui semble faire le job sur les tests que j'ai pu faire en reprenant votre code.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/08/2012, 09h05
  2. Réponses: 0
    Dernier message: 09/04/2008, 09h34
  3. Réponses: 3
    Dernier message: 02/07/2007, 09h50
  4. HTML : problème de tableaux qui se superposent
    Par paprika dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 13/10/2005, 15h55
  5. Réponses: 12
    Dernier message: 27/05/2004, 00h13

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