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 :

Histogramme liste Python


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2020
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Histogramme liste Python
    Bonjour, l'idée est de faire un l'histogramme en pièce jointe en python via matplotlib.

    Après pas mal de recherche (je débute en python) et d'essai je n'arrive pas à trouver une solution qui me convient.

    L'idée serait d'afficher les position des occurences d'élément dans une chaine de caractère par exemple:

    list =[["a","b","a","c"] ,["d","d","d"],["a","d"],["c","c"],["a","a]]

    "a" apparait 2 fois dans la list[0], 1 fois dans la list[2] et 2 fois dans list[4]

    "b" apparaît 1fois dans list[0]

    etc...

    Auriez-vous une idée de réalisation ?

    Merci d'avance
    Images attachées Images attachées  

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

    Citation Envoyé par GatoPanda Voir le message
    Auriez-vous une idée de réalisation ?
    Avec matplotlib, vous avez une galerie de graphiques qu'on peut réaliser avec.
    On cherche celui qui est proche de ce qu'on attend et on l'adapte.
    Dans votre cas, peut être que cet exemple est proche.

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

  3. #3
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut


    La distribution des lettres contenues dans les listes ne pose pas de problème.

    Nom : freq_lettres.png
Affichages : 503
Taille : 18,8 Ko

    Pour un texte, les caractères accentués sont bien présents dans le texte mais pas dans hist ! Je ne trouve pas la solution.

    Nom : freq_lettre_texte.png
Affichages : 468
Taille : 17,2 Ko

    Code Python : 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
    import matplotlib
    import matplotlib.pyplot as plt
    from re import findall
    import locale
     
    locale.setlocale(locale.LC_ALL, ('fr_FR', 'UTF-8'))
     
    matplotlib.rc('font', family='Arial')
    matplotlib.pyplot.xticks(fontsize=14)
     
    plt.hist([["a", "b", "a", "c"], ["d", "d", "d"],
              ["a", "d"], ["c", "c"], ["a", "a"]])
    plt.title("Distribution des lettres contenues dans les listes")
    plt.xlabel("Lettres")
    plt.ylabel("Fréquence")
    plt.legend(["liste 1", "liste 2", "liste 3", "liste 4", "liste 5"])
    plt.show()
     
    texte = """Bonjour, l'idée est de faire un l'histogramme en pièce jointe en python via matplotlib. 
    Après pas mal de recherche (je débute en python) et d'essai je n'arrive pas à trouver une solution 
    qui me convient.
    L'idée serait d'afficher les position des occurences d'élément dans une chaine de caractère 
    par exemple: !"""
     
    lst = sorted(findall(
        '[a-zA-Z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]', texte.lower()), key=locale.strxfrm)
     
    print(lst)
     
    """ Les caractères accentués sont bien présents dans le texte mais pas dans hist """
     
    matplotlib.rc('font', family='Arial')
    matplotlib.pyplot.xticks(fontsize=14)
     
    plt.hist(lst)
    plt.title("Distribution des lettres contenues dans le texte")
    plt.xlabel("Lettres")
    plt.ylabel("Fréquence")
    plt.show()

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2020
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    D'accord. Merci pour vos réponses je vais explorer ces pistes.

    Un problème que j'ai eu c'est que je souhaiterais que l'affichage des lettres ce fasse sur l'axe des y et non des x, comme le montre mon image. Hors dans toutes les solutions c'est l'inverse et j'ai reçu pas mal d'erreurs lorsque je souhaite changer.

    Peut être qu'en partant de vos idées/solutions cela fonctionnera.

  5. #5
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Corrections pour fréquence des lettres dans un texte :

    1. trop fatigué hier soir, j'ai oublié de renseigner le paramètre bins.
    2. j'ai trouvé un truc pour les lettres accentuées, mais cela se voit dans l'histogramme



    Nom : freq_lettre_texte.png
Affichages : 429
Taille : 20,4 Ko

    Code Python : 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
    import matplotlib
    import matplotlib.pyplot as plt
    from re import findall
    import locale
     
    locale.setlocale(locale.LC_ALL, ('fr_FR', 'UTF-8'))
     
    texte = """Bonjour, l'idée est de faire un l'histogramme en pièce jointe en python via matplotlib. 
    Après pas mal de recherche (je débute en python) et d'essai je n'arrive pas à trouver une solution 
    qui me convient.
    L'idée serait d'afficher les position des occurences d'élément dans une chaine de caractère 
    par exemple: !"""
     
    lst = sorted(findall(
        '[a-zA-Z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]', texte.lower()), key=locale.strxfrm)
     
    print(lst)
     
    """ Les caractères accentués sont bien présents dans le texte mais pas dans hist """
     
    matplotlib.rc('font', family='Arial')
    matplotlib.pyplot.xticks(fontsize=14)
     
    """ Ajouter un u devant la lettre permet de distinguer les caractères accentués mais se voit
    dans hist """
     
    datas = ['u' + ch for ch in lst]
     
    plt.hist(datas, bins=26)
    plt.title("Distribution des lettres contenues dans le texte")
    plt.xlabel("Lettres")
    plt.ylabel("Fréquence")
    plt.show()

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

Discussions similaires

  1. Liste python et variable float
    Par Frank_Rook dans le forum Général Python
    Réponses: 3
    Dernier message: 15/03/2012, 09h58
  2. Manipulation list python
    Par Aioros046 dans le forum Général Python
    Réponses: 7
    Dernier message: 10/03/2010, 15h40
  3. Tri Liste Python
    Par Isabella83 dans le forum Général Python
    Réponses: 1
    Dernier message: 09/01/2010, 17h13
  4. vecteur C vers liste Python
    Par jyjeanphi dans le forum Interfaçage autre langage
    Réponses: 4
    Dernier message: 30/03/2009, 05h01
  5. Que choisir pour une application de "gestion d'une todo liste" ? Python ou Java ?
    Par Yoshidu62 dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 10/08/2007, 09h03

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