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 :

Visualisation d’une fonction de 2 variables


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Par défaut Visualisation d’une fonction de 2 variables
    Bonjour (ou rebonjour)

    J'ai 3 vecteurs: 2 de coordonnées et 1 de valeur, je cherche à réaliser une map de couleur (pcolor, pcolormesh etc..)

    Cependant mes vecteurs sont de même tailles ce qui signifient que les coordonnées ne définissent pas les limites d'une cellule mais seulement un point unique.

    Donc si je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    [...]
    Xdata,Ydata=np.meshgrid(x, y)
     
    plt.figure()
    plt.pcolor(Xdata,Ydata,Z)
    plt.colorbar()
    plt.show()
    il me retourne (logiquement):

    ValueError: need more than 1 value to unpack
    Je cherche donc un script pouvant en quelques sortes interpoler les meshgrid.

    Merci d'avance

  2. #2
    Membre Expert

    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
    Par défaut
    Les valeurs contenues dans le vecteur x et y ne sont pas alignées ?

    Si ce n'est pas le cas alors oui en effet il te faudra une interpolation, mais ca dépend de la répartition de tes points x et y...

    Ou sinon, déjà tu peux tracer un nuage de point qui te donnera une bonne idée de la chose (voire même sera suffisant pour ce que tu veux en faire)

    https://matplotlib.org/gallery/shape...s/scatter.html

    Il faut que tu donnes des vecteurs x,y et Z (genre 10 points) pour qu'on ait un exemple. Car là on ne peut pas faire tourner le code que tu nous donnes...

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Par défaut
    Merci pour ta réponse.

    je pourrais donner des valeurs mais mon problème est plus basique je pense

    Voilà mes tailles de matrice

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print np.shape(x), np.shape(y), np.shape(Xdata), np.shape(Ydata),np.shape(Z)
    retourne:
    (656,) (656,) (656, 656) (656, 656) (656,)
    alors que si je prend un exemple simple qui marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import matplotlib.pyplot as plt
    import numpy as np
     
    x = np.arange(0,11)
    y = np.arange(0,11)
    xv, yv = np.meshgrid(x,y)
    c = np.random.rand(10,10)
    print np.shape(x),np.shape(y),np.shape(xv), np.shape(yv), np.shape(c)
    plt.pcolormesh(xv,yv,c)
     
    plt.show()
    ici il me retourne:

    (11,) (11,) (11, 11) (11, 11) (10, 10)
    Les deux grosses différences sont :

    -il y a 1 element de plus dans le maillage (normal car chaque cellule est défini par ses côtés et non un point unique comme moi)

    -la dimension des valeurs (Z dans mon exemple, c dans l'exemple du haut) n'est pas la même. Il faudrait une dimension 2 pour que ça marche mais moi je n'ai qu'une valeur par point.

    Mon problème est :

    J'ai 3 vecteurs de même dimension: 1 pour l'abscisse x, 1 pour l'ordonnée y et 1 pour une valeur.
    Je cherche à faire une belle map d'interpolation en couleur.

    Donc pas forcément besoin de donner mes valeurs, on pourrait le faire avec n'importe quoi :

    x={0 1 2 5]
    y=[0 1 2 4]
    data=[0.2 0.4 12 0.5]

  4. #4
    Membre Expert

    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
    Par défaut
    La fonction scatter de mon message précédent convient très bien dans ce cas.

    avec x,y et Z des arrays à 1 dimension de même taille. Donc typiquement ce que tu as.
    Et ca te fournit le nuage de points de tes données.

    Et après :
    1) soit tes données sont en grille, et dans cas on peut avoir une image continue. Mais comme tu ne sais visiblement pas, et qu'on ne voit pas les données et bien on ne peut rien te dire à ce propos.
    2) soit tes données sont éparses et là c'est la visualisation via un nuage de point qu'il te faut, comme je te la présente ici

    Poste nous ce que ca donne la visu en nuage de points qu'on ait plus d'infos

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Par défaut
    Citation Envoyé par lg_53 Voir le message
    La fonction scatter de mon message précédent convient très bien dans ce cas.

    avec x,y et Z des arrays à 1 dimension de même taille. Donc typiquement ce que tu as.
    Et ca te fournit le nuage de points de tes données.

    Et après :
    1) soit tes données sont en grille, et dans cas on peut avoir une image continue. Mais comme tu ne sais visiblement pas, et qu'on ne voit pas les données et bien on ne peut rien te dire à ce propos.
    2) soit tes données sont éparses et là c'est la visualisation via un nuage de point qu'il te faut, comme je te la présente ici

    Poste nous ce que ca donne la visu en nuage de points qu'on ait plus d'infos
    Remercie pour ta réponse,

    J'ai essayé avec scatter mais me retourne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TypeError: You must first set_array for mappable
    j'ai un vrai pb de compréhension logique de la taille des matrices là.

    Alors voici mes données en PJ, il s'agit simplement d'une matrice 3*n avec en 1ere colonne X, 2eme Y et dernière les données.

    X-Y-Data.txt

    Merci d'avance

  6. #6
    Membre Expert

    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
    Par défaut
    Bah je ne sais pas ce que tu as essayé, mais chez moi la solution que je t'ai recommandé fonctionne très bien avec tes données.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import numpy as np
    import matplotlib.pyplot as plt
     
    data = np.loadtxt('X-Y-Data.txt')
     
    x = data[:,0]
    y = data[:,1]
    Z = data[:,2]
     
    ax=plt.scatter(x, y, c=Z)
    plt.colorbar(ax)
    plt.show()
    Nom : Figure_1.png
Affichages : 1507
Taille : 169,7 Ko

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/03/2011, 13h00
  2. [CR 10]Chgt de police apres evaluation dune fonction
    Par linda_t dans le forum SAP Crystal Reports
    Réponses: 8
    Dernier message: 07/02/2006, 17h35
  3. Imprimer/Visualiser le contenu d'une variable (VBS)
    Par Tartenpion dans le forum VBScript
    Réponses: 2
    Dernier message: 29/09/2005, 10h32
  4. Réponses: 1
    Dernier message: 20/07/2005, 09h13
  5. Dérivation dune fonction
    Par srvremi dans le forum C++Builder
    Réponses: 2
    Dernier message: 27/07/2002, 14h21

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