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 et graphe d'intensité


Sujet :

Calcul scientifique Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 33
    Points : 29
    Points
    29
    Par défaut matplotlib et graphe d'intensité
    Bonjour ,

    Je débute en python et en tracé python , je voulais savoir comment je peux afficher b avec imshow() si c'est bien la bonne fonction à utiliser

    b=[0, 1, 2 , 1,3, 1]
    x=[40,41,42,40,41,42]
    y=[0,0,0,10,10,10]

    j'arrive à tracer b seul mais si je veux lui associer les coordonnées x et y comment dois je faire ( à chaque bi correspond un xi, yi )

    Merci d'avance

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 600
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 600
    Points : 56 698
    Points
    56 698
    Billets dans le blog
    40
    Par défaut
    Bonjour,

    j'ai pas compris ce que tu voulais faire, mais tu trouveras peut-être ton bonheur dans ce tutoriel : Tutoriel Matplotlib

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Points : 692
    Points
    692
    Par défaut
    Salut.
    Tu peux utiliser pyplot.scatter pour afficher l'intensité aux points.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> import matplotlib.pyplot as plt
    >>> x = [40, 41, 42, 40, 41, 42]
    >>> y = [0, 0, 0, 10, 10, 10]
    >>> plt.scatter(x, y, s=[100, 200, 300, 200, 1000, 200], marker="^")
    <matplotlib.collections.PathCollection object at 0xb43bff8c>
    >>> plt.show()
    >>>
    Nom : plt_scatter_ex.png
Affichages : 1235
Taille : 11,8 Ko

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 33
    Points : 29
    Points
    29
    Par défaut
    Bonjour ,

    Merci pour le retour et la doc, c'est bien ça pour la façon de saisir les entrées par contre du coté graph je souhaiterais juste avoir

    des pixels carrés qui prennent tout l'espace disponible et dont la couleur reflete l'intensité quelque chose comme en piece jointe
    Images attachées Images attachées  

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 33
    Points : 29
    Points
    29
    Par défaut
    mince je voulais juste le mettre en fichier joint , c'est pas trop ça !

  6. #6
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    Salut,

    Comme ceci?
    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
    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib.cm as cm
     
    b = [0, 1, 2 , 1, 3, 1]
    x = [40, 41, 42, 40, 41, 42]
    y = [0, 0, 0, 10, 10, 10]
     
    z = np.array((b, x, y))
     
    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.imshow(z, cmap=cm.jet, interpolation='nearest')
    ax.set_xlabel('x-axis')
    ax.set_ylabel('y-axis')
    plt.show()

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 33
    Points : 29
    Points
    29
    Par défaut
    En fait pour le style de graphique c'est ça mais avec la façon de placer le point sur le mode du scatter

    je cherche à faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    10  |  4    5    6
         |
     0  |__0__1___3___
           40   41   42

  8. #8
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    Citation Envoyé par tinitus Voir le message
    En fait pour le style de graphique c'est ça mais avec la façon de placer le point sur le mode du scatter

    je cherche à faire ça :

    10 | 4 5 6
    |
    0 |__0__1___3___
    40 41 42
    Navré mais je ne comprends pas là où tu veux en venir...

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 33
    Points : 29
    Points
    29
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    10  |  4    5    6
        |
     0  |__0____1____3___
           40   41   42
    Plutôt ça , le formatage est mal passé au dernier message, c'est pour l'idée, c'est censé repésenter l'image et les axes graduées...

    Juste pour l'exemple, j'aimerais avoir une grille de 2 pixels en y d'ordonnées 0 et 10 , 3 pixels en x (40 ,41,42)

    et pouvoir ensuite placé les points de b (0,1,3,4,5,6) suivant les coordonnées contenues dans x et y , comme se que fait scatter , sauf qu'au lieu des marqueurs

    avoir des pixels dont la couleur represente b. Comme une carte topographique , j'espère que c'est plus clair

  10. #10
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    Ah ok, c'est plus clair.

    Il fallait rechercher "matplotlib imshow 2-D array" sur google pour trouver une réponse. Voici une version adaptée à tes besoins (du moins ce que j'ai compris):
    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
    import numpy as np
    import matplotlib.pyplot as plt
     
    x = np.array([40, 41, 42])
    y = np.array([0, 10])
    z = np.array([[0, 1, 3] , [4, 5, 6]])
    xlim = (x.min(), x.max())
    ylim = (y.min(), y.max())
     
    fig = plt.figure()
    ax = fig.add_subplot(111)
    im = plt.imshow(z, origin='lower', extent=xlim+ylim, aspect='auto', interpolation='none')
    plt.colorbar(im, orientation='horizontal')
    plt.xlim(xlim)
    ax.set_xlabel('x-axis')
    ax.set_ylabel('y-axis')
    ax.set_xticks(x)
    ax.set_yticks(y)
    plt.grid()
    plt.show()
    Si tu ne veux pas de l'échelle en bas, remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    im = plt.imshow(z, origin='lower', extent=xlim+ylim, aspect='auto', interpolation='none')
    plt.colorbar(im, orientation='horizontal')
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ax.imshow(z, origin='lower', extent=xlim+ylim, aspect='auto', interpolation='none')
    Voilà ce que cela donne (alors y'a certainement moyen de centrer les valeurs des axes, mais c'est du detail):
    Pièce jointe 159653
    Images attachées Images attachées  

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 33
    Points : 29
    Points
    29
    Par défaut
    Merci ,

    oui c'est ça sauf que x y b arrivent sous la forme

    x=[40,41,42,40,41,42]
    y=[0,0,0,10,10,10]
    b=[0,1,3,4,5,6]

    c'est pour ça que le scatter avait l'air sympa car il place vraiement les points suivant leurs coordonnées on peut donc lui fournir en serie.
    là il faut re construire b , x, y avant de pouvoir l'afficher , hors je n'ai pas accès aux dimensions de l'image on le devine ici en 2*3 pour l'exemple
    ou alors faire un algo pour retrouver les dimensions

    sinon sais tu comment fixer le nombre de digits après la virgule sur les axes ? il y a tellement d'options qu'on s'y perd un peu

  12. #12
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    Citation Envoyé par tinitus Voir le message
    faire un algo pour retrouver les dimensions
    Hmm, ben ouais. C'est ça programmer. Perso, c'est tout le plaisir. Très rapidement on voit sur les valeurs exemple qu'il y a 3 valeurs différentes en x, et 2 en y. Comment le savoir automatiquement? Une solution possible:
    Je ne vais pas te donner une solution toute faite, parce qu'elle ne te servira pas. Essaie par toi même et au besoin poste un nouveau sujet. Mais voici un autre élément de réponse: utiliser la puissance des "array" de numpy (des matrices):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    z = np.array(b).reshape(2,3)
    print z

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 33
    Points : 29
    Points
    29
    Par défaut
    Merci ,

    J'avais déjà commencé un algo pour retrouver les dimensions , évidement je te demandais pas de le faire , le reshape je l'avais croisé dejà mais oui le set(x) c'est pas mal

    sinon une idée pour formater le nombre de chiffres après la virgules sur les ticks ?

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 33
    Points : 29
    Points
    29
    Par défaut
    ok, trouvé

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

Discussions similaires

  1. [HELP]graph d'intensité en graph X-Y
    Par graider dans le forum LabVIEW
    Réponses: 0
    Dernier message: 20/03/2012, 10h15
  2. Enregistrement du graph d'intensité en image
    Par imados_xp dans le forum LabVIEW
    Réponses: 1
    Dernier message: 06/04/2009, 19h03
  3. Le graphe d'intensité d'un voltage contrôlé par un TTL
    Par imados_xp dans le forum LabVIEW
    Réponses: 0
    Dernier message: 16/02/2009, 21h11
  4. [matplotlib] dessiner graph avec pcolor
    Par thibaultG dans le forum Calcul scientifique
    Réponses: 3
    Dernier message: 02/04/2008, 08h45
  5. Graph d'intensité
    Par mowts dans le forum LabVIEW
    Réponses: 1
    Dernier message: 05/04/2007, 14h39

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