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 :

histogramme 2D


Sujet :

Calcul scientifique Python

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut histogramme 2D
    Salut,

    Je pense pas que ce que je cherche à faire soit difficile mais je bloque depuis trop longtemps dessus.
    Je veux visualiser une matrice ! ou un histogramme 2D quoi. Avec matplotlib, j'ai pas trouvé.

    Merci de votre aide !

    Mathieu

  2. #2
    Membre actif Avatar de scifire
    Inscrit en
    Juillet 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 226
    Points : 245
    Points
    245
    Par défaut
    Si j'etais a ta place peut-etre c'est http://www.pythonware.com/products/pil/ que je vais essayer

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    merci mais c'est un soft pour traiter des images.
    Je cherche tout simplement à plotter une matrice comme on pourrait le faire en 1 ligne en ROOT (j'aurais jamais pensé dire que ROOT était simple d'emploi !) :

    TMatrix* mat;
    mat = ...;
    mat -> Draw();

    des idées ?

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    pas d'idées ?
    il faudrait passer par numarray comme je l'ai vu passer dans un sujet ?

    help please !

    mathieu

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 32
    Points : 28
    Points
    28
    Par défaut Re: histogramme 2D
    Sur la doc du site http://matplotlib.sourceforge.net/ma...lab.html#-hist

    Bon un petit exemple fait en 2 sec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    from pylab import *
    x=[1,2,3,6,2,0]
    hist(x,bins=10,normed=0,bottom=0)
    show()
    Sympa matplotlib non ? 8)

    J'èspere que ça pourra t'aider à +

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    oui ça marche pour un histo 1D mais pour un 2D ?

    merci en tout cas !

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    je n'ai pas la solution à votre problème, mais je pense que vous pouvez répondre au mien...
    En fait je cherche créé un histogramme 2d à partir d'une image. Le principe est le suivant :
    1- j'applique une gaussienne centré sur le centre de mon image afin de mettre plus de poids sur le centre de l'image...
    2- Ensuite j'effectue un histo 1 D sur chaque zone d'interet récupéré apres le filtrage gaussien .
    3-Créé l'histo 2D

    Enfin ça c'est dans la théorie ... mais dans la pratique je ne sais pas du tout comment générer mon histogramme 2D sous matlab. Peut etre que vous avez des sites expliquant comment ça marche...

    Je vous remercie tous d'avance

  8. #8
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 82
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par guiph Voir le message
    Sur la doc du site http://matplotlib.sourceforge.net/ma...lab.html#-hist

    Bon un petit exemple fait en 2 sec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    from pylab import *
    x=[1,2,3,6,2,0]
    hist(x,bins=10,normed=0,bottom=0)
    show()
    Sympa matplotlib non ? 8)

    J'èspere que ça pourra t'aider à +
    Que représente les valeurs de x ici exactement?
    C'est les coordonnées de chaque pavé de l'histogramme?

  9. #9
    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
    Ce sont les valeurs à trier.

  10. #10
    Membre habitué Avatar de KINENVEU
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 184
    Points : 131
    Points
    131
    Par défaut
    je ne comprends pas vraiment ce que tu entends par "histogram1D" ou "2D"...

    un histogram comme on l'entend par la fonction histogram de pylab ou de numpy
    est un calcul d'effectif(h) d'une serie(x) dans des intervals(b).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    h, b = numpy.histogram(x)
    et sa representation graphique peut etre obtenue par un barplot de pylab,
    ou directement avec la fonction "hist" de pylab (qui retourne aussi h et b).

    si tu veux representer visuellement les valeurs d'une matrice,
    je crois qu'il existe une fonction de pylab qui te permet de creer une pseudo-image coloree par les valeurs de ta matrice. (voir doc)

    inversement, si tu as une image,
    PIL contient egalement une fonction histogram
    qui te donne un histogram des valeurs de pixel.
    ce qui revient au meme que de transformer ta matrice en vecteur
    et d'en calculer l'histogram je suppose.

    je ne sais pas si cela repond a ton probleme.
    mais dans tous les cas, tu devrais essayer de definir plus clairement ce que tu cherches a faire. cela faciliterait le travail de ceux qui cherchent a t'aider.


  11. #11
    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
    Si tu as des couples de valeurs et que tu cherches à estimer leur densité de proba, tu te retrouves à faire un histogramme 2D

  12. #12
    Membre habitué Avatar de KINENVEU
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 184
    Points : 131
    Points
    131
    Par défaut
    merci matthieu, je n'avais pas vu le probleme comme ca.

    l'idee reste la meme. calcul d'effectif mais cette fois dans des intervals de R*R.

    la 1ere chose a faire, est de regarder si numpy.histogram fonctionne en dimension n.
    si ce n'est pas le cas, voila ce que je ferais pour depanner.
    je n'ai pas teste:

    soit x ta liste de couple de R*R.
    - tri tes valeurs selon la 1ere dimenson
    - transforme x en array de numpy pour faciliter les operations.
    soit b1 et b2 les intervals dans chaque dimension.
    - parcours la 1ere dimension (par interval de b1) -> sous population x[b1i]
    - h(b1i, b2), b2 = histogram(x[b1i]) # ligne de la matrice h
    -> h(b1i, b2j)
    - tu te retrouves donc avec une matrice d'effectif de dimension 2 : h
    h est une discretisation de ta loi de densite de probabilite si je ne m'abuse.

    pour la visualiser:
    - soit tu en fais une image 2D avec pylab (voir doc)
    - soit tu traces un genre de nappe en 3D avec pylab (voir doc)

  13. #13
    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
    Il me semble qu'il y a une version nD quelque part

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/01/2005, 10h53
  2. [CR8.5] Graphique : comment mélanger histogramme et ligne ?
    Par kiki26 dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 18/01/2005, 15h28
  3. TChart et histogramme
    Par coucoucmoi dans le forum Composants VCL
    Réponses: 8
    Dernier message: 30/08/2004, 16h10
  4. Questions sur chartfx (histogramme)
    Par lejert dans le forum C++Builder
    Réponses: 2
    Dernier message: 20/01/2004, 13h54
  5. [TChart] comment remplir un histogramme avec du rouge strié.
    Par :GREG: dans le forum Composants VCL
    Réponses: 2
    Dernier message: 12/08/2002, 09h37

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