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-scatter3D]: colorisation en fonction de z


Sujet :

Calcul scientifique Python

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 7
    Points : 6
    Points
    6
    Par défaut [Matplotlib-scatter3D]: colorisation en fonction de z
    Bonjour,

    Je ne suis pas habitué à poster des questions sur des forums, mais là, je bloque sur un problème qui, j’en suis certain, tient à un détail qui m’échappe.

    J’aimerai représenter les résultat d’un levé (x,y,z) en colorant mes points en fonction de leur hauteur (valeur de z). La fonction scatter3D de matplotlib est faite pour ça visiblement. Tout marche du tonnerre pour la colorbar (jet) qui est bien limitée aux valeurs extrêmes de z mais... rien de chez rien pour la coloration de mes données (couleur uniforme alors que je demande de colorer en fonction de z via mon argument c=z).

    Voici le bout de code relatif:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    from mpl_toolkits.mplot3d.axes3d import *
    import pylab as plt
    x=y=z=range(10)
    fig = plt.figure()
    ax = Axes3D(fig)
    col=ax.scatter3D(x,y,z,c=z,cmap=plt.cm.jet)
    cbar = fig.colorbar(col,shrink=0.9,extend='both')
    cbar.ax.set_ylabel('axis 3 data values')
    plt.show()
    Si je ne représente pas la colorbar sur mon graphique de sortie (code un peu plus simple), j'ai logiquement (et malheureusement) toujours le même résultat, à savoir une couleur uniforme pour mes points:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    from mpl_toolkits.mplot3d.axes3d import *
    import pylab as plt
    x=y=z=range(10)
    fig = plt.figure()
    ax = Axes3D(fig)
    ax.scatter3D(x,y,z,c=z,cmap=plt.cm.jet)
    plt.show()
    Voyez-vous ce qui cloche dans mes arguments?

    Merci beaucoup d’avance !

    EDIT....: Il s'agit d'un bug, qui a été pris en compte et sera (ou a déjà été) corrigé.

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    J'utilise python et matplotlib depuis bientôt 2 mois dans le cadre de traitement de données de calcul. Je n'ai donc pas une grande expérience en la matière. Comprendre : merci de me ménager et de parler lentement...

    J'aurais besoin de réaliser exactement la fonction décrite dans ce post. A vrai dire, je préfèrerais même une carte colorée à plat si possible. J'ai vérifié avec la dernière version de matplotlib à jour, et ce bug ne semble pas avoir été résolu pour le moment. Par ailleurs, je travaille sur environ 35000 points répartis de manière irrégulière et non une jolie grille de données. A ma connaissance, aucune fonction de matplotlib ne peut plotter cela à part scatter.

    Quelqu'un pourrait-il m'aiguiller sur une solution à ce problème ?

    Il reste la possibilité bien sûr d'interpoler une surface entre mes 35000 points, puis d'en retirer une grille de points qu'un simple pcolor m'affiche superbement. Ceci étant, mon ordinateur est tout à fait incapable de générer une interpolation aussi lourde, tout du moins avec un simple scipy.interpolate.bisplrep ou scipy.interpolate.BivariateSpline. Je devrais alors coder une fonction qui découpe mon espace en petites zones interpolables séparément, et tenter de recoller ensuite toutes les interpolations ... Et cette perspective ne m'enchante guère.

  3. #3
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Surprenant, cela fonctionnait dans une version très ancienne de Matplotlib, OK, c'était avant la réécriture de la partie 3D.
    Tu utilises quelle version ?

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Je suis sous 0.99.1.1

  5. #5
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Passe en 1.0.0, j'ai testé il y a quelques jours, chez moi c'est bon.

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

Discussions similaires

  1. Problème Matplotlib 3D fonction ax.plot_surface
    Par frisou65 dans le forum Calcul scientifique
    Réponses: 0
    Dernier message: 04/10/2011, 17h18
  2. pb avec la fonction griddata de matplotlib.mlab
    Par green63 dans le forum Calcul scientifique
    Réponses: 0
    Dernier message: 08/06/2009, 20h42
  3. Encart code + Fonction de colorisation
    Par Ovide dans le forum Langage
    Réponses: 1
    Dernier message: 30/10/2005, 01h12
  4. fonction printf
    Par ydeleage dans le forum C
    Réponses: 7
    Dernier message: 30/05/2002, 11h24
  5. FOnction api specifiant la position de la souris
    Par florent dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/05/2002, 20h07

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