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

Discussion :

affichage nuage de points avec pyplot


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    mars 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Espagne

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : mars 2019
    Messages : 16
    Points : 9
    Points
    9
    Par défaut affichage nuage de points avec pyplot
    Bonjour,

    Je souhaite afficher, avec pyplot, un ensemble de points que j'obtiens sous la forme d'une liste 2D :
    [[x1,y1],[x2,y2],[x3,y3],...] oú les xi sont les abscisses et les yi les ordonnées.
    Je n'arrive pas à afficher cet ensemble de point... Dans tous les exemples que j'ai pu lire sur les documentations et forums, les points sont toujours sous la forme : [x1,x2,x3,...],[y1,y2,y3,...] . L'affichage est alors très simple avec pyplot.

    Je cherche une méthode simple pour cet affichage, sans passer par numpy et des transposées de matrice.
    Merci de votre aide.

  2. #2
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    14 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 14 205
    Points : 23 967
    Points
    23 967
    Par défaut
    Salut,

    Citation Envoyé par Apoplexus Voir le message
    Je cherche une méthode simple pour cet affichage, sans passer par numpy et des transposées de matrice.
    Avec zip:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> L
    [['a', 0], ['b', 1], ['c', 2], ['d', 3]]
    >>> list(zip(*L))
    [('a', 'b', 'c', 'd'), (0, 1, 2, 3)]
    >>>
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre expérimenté
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    avril 2005
    Messages
    1 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2005
    Messages : 1 410
    Points : 1 573
    Points
    1 573
    Par défaut
    Salut, un exemple....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    x,y=[],[]
     
    liste=[(0,1),(0,2),(4,5)]
     
    for i in liste:
        xi,yi=map(float,i)
        x.append(xi)
        y.append(yi)
     
    print(x)
    print(y)

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    mars 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Espagne

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : mars 2019
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Avec zip:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> L
    [['a', 0], ['b', 1], ['c', 2], ['d', 3]]
    >>> list(zip(*L))
    [('a', 'b', 'c', 'd'), (0, 1, 2, 3)]
    >>>
    - W
    Formidable !!!
    Merci beaucoup

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    mars 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Espagne

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : mars 2019
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    Merci à toi aussi Archimède !
    J'avoue préférer la méthode avec zip, plus élégante

    Merci pour vos réponses

  6. #6
    Membre expérimenté
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    avril 2005
    Messages
    1 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2005
    Messages : 1 410
    Points : 1 573
    Points
    1 573
    Par défaut
    De rien, excuse, j'ai lu un peu trop rapidement ton post... Je pensais que tu voulais récupérer les données d'un fichier csv et exploiter un reader pour en tirer deux listes...

    Bonne journée

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    mars 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Espagne

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : mars 2019
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    Et pour comprendre, ça signifie quoi "*" devant une liste ?

  8. #8
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    14 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 14 205
    Points : 23 967
    Points
    23 967
    Par défaut
    Citation Envoyé par Apoplexus Voir le message
    Et pour comprendre, ça signifie quoi "*" devant une liste ?
    *liste comme argument à l'appel d'une fonction, c'est l'unpacking opposé au packing:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> def f(*args):   # packing
    ...     print(len(args), args)
    ...
    >>> f([1,2,3])
    1 ([1, 2, 3],)
    >>> f(*[1,2,3]) # unpacking
    3 (1, 2, 3)
    >>>
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Membre expérimenté

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    mars 2013
    Messages
    772
    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 : 772
    Points : 1 533
    Points
    1 533
    Par défaut
    Ca veut dire que la fonction zip est appelé ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    zip(L[0], L[1], L[2], ..., L[n-1])
    où n est la taille de L. La fonction zip prenant un nombre arbitraire d'argument, et comme vous en avez beaucoup à donner, c'est quand même bien pratique ce * !


    Un exemple pour comprendre :

    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
    def somme1(list_a_sommer):
        s=0
        for elt in list_a_sommer :
            s+=elt
        return s
     
    def somme2(*args): ### Ce *args capture tous le groupe d'argument dans un tuple
        print("Sommons :",args) ### pour comprendre
        s=0
        for elt in args :
            s+=elt
        return s
     
    liste_a_sommer = [1,2,3]
    print(somme1(liste_a_sommer))
    print(somme2(*liste_a_sommer))
    Les 2 codes fonctionnent. Après c'est un choix d'implémentation. L'intéret de la fonction somme2, est que si on a juste une petite somme à faire, comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    somme2(1,2)
    somme2(1,2,3)
    et bien cela fonctionne sans que nous n'ayons besoin de repasser par une liste. Ce que ne permet pas somme1, qui vous oblige à écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    somme1([1,2])
    somme1([1,2,3])

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

Discussions similaires

  1. problème d'affichage avec printf
    Par sorari dans le forum C++
    Réponses: 12
    Dernier message: 08/03/2005, 18h30
  2. Réponses: 6
    Dernier message: 19/10/2004, 13h46
  3. Resolution d'affichage avec x11
    Par cosmos38240 dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 06/06/2004, 23h26
  4. Pb affichage avec un PaintBox (pour eviter scintillement)
    Par juan64 dans le forum C++Builder
    Réponses: 7
    Dernier message: 08/04/2004, 09h21
  5. Problème d'affichage avec trace
    Par WriteLN dans le forum Flash
    Réponses: 10
    Dernier message: 22/10/2003, 16h59

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