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 :

Recherche fonction / méthode pour tracer un graph particulier


Sujet :

Calcul scientifique Python

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 25
    Points : 15
    Points
    15
    Par défaut Recherche fonction / méthode pour tracer un graph particulier
    Bonjour.

    Je cherche une méthode pour tracer en coordonnées polaires (idéalement, la projection azimutale d'une sphère) un ensemble de points d'intensités variables.

    J'utilise pour le moment la fonction polar de pylab, mais celle-ci ne me permet pas de différencier l'intensité relative de mes points.

    Connaîtriez vous donc une fonction ou une méthode permettant par un changement de la taille des mes points ou de leur couleur de faire cela ? Une fonction "qui mêle" polar et colormap ?

    Merci d'avance.

  2. #2
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Bon et bien une fois n'est pas coutume je réponds à ma propre question...

    J'étais passé à côté de la fonction scatter de pylab qui fait exactement ce que je recherche.
    http://matplotlib.sourceforge.net/ex...r_scatter.html

    Merci à ceux qui m'ont lu.

  3. #3
    Membre averti Avatar de alexdevl
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 265
    Points : 344
    Points
    344
    Par défaut
    Bonjour,

    N'arrivant pas à ce que je voulais en polaire (insertion de texte..) j'ai cherché les fonctions associées aux tracé de courbes pour passer de theta,r en x,y. Je poste au cas où tu aurais le même problème...:


    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
     
     
    import numpy as np
    import matplotlib.path
    import matplotlib.patches
    import matplotlib.pyplot as plt
    import math
     
    # Chargement des valeurs
    theta_degs=[0,20,50,70,90,110,130] # angles en degrés
    rs=[90,100,110,95,96,101,89] # valeurs de rayons
    ps=[9,10,11,12,5,14,8] # valeur du point
    r_arc=100
     
    # Calcul des coordonnées
    xs=[]
    ys=[]
    for (theta_deg,r) in zip(theta_degs,rs):
        theta_rad = np.array(theta_deg)/ 180.0 * np.pi
     
        x=math.cos(theta_rad)*r
        xs.append(x)
        y=math.sin(theta_rad)*r
        ys.append(y)
     
    fig = plt.figure(figsize=(10,10)) # Création de la figure
    fig.add_axes((1,1,1,1))
    ax = fig.add_subplot(111, aspect='equal') # Création d'un tracé
     
     
    #---------Affichage des points -------------------------
    # Tracé d'une ligne brisée de valeurs
    path=matplotlib.path.Path(zip(xs,ys),
        codes=[matplotlib.path.Path.MOVETO]+[matplotlib.path.Path.LINETO]*
            (len(theta_degs)-1))
    patch = matplotlib.patches.PathPatch(path, facecolor='w',edgecolor="k",lw=2)
    ax.add_patch(patch)
     
    # Habillage des points
    for (x,y,r,theta_deg,p) in zip(xs,ys,rs,theta_degs,ps):
        # Affichage du texte des  valeurs
        ax.text(x-15,y+2,"(r="+str(int(r))+",theta="+str(int(theta_deg))+")")
        # Tracé de la ligne de l'axe
        path=matplotlib.path.Path(zip([0,x],[0,y]),
            codes=[matplotlib.path.Path.MOVETO]+[matplotlib.path.Path.LINETO]*1)
        patch = matplotlib.patches.PathPatch(path, facecolor='w',edgecolor="k",linestyle="dashed")
        ax.add_patch(patch)
        # Tracé du cercle
        patch_cercles = matplotlib.patches.Circle(xy=(x,y), radius=p,
        fill=True,linestyle="dashed",facecolor='g',edgecolor="g")
        ax.add_artist(patch_cercles)
     
     
    # Tracé d'un arc
    theta_arc=[min(theta_degs),max(theta_degs)]
    patch_arc100 = matplotlib.patches.Arc(xy=(0,0), width=r_arc*2, height=r_arc*2,
        theta1=theta_arc[0], theta2=theta_arc[1],fill=False,linestyle="dashed", 
        facecolor='w',edgecolor="r")
    ax.add_artist(patch_arc100)
     
    ax.grid()
    ax.set_xlim(-120,140)
    ax.set_ylim(-120,120)
    ax.set_title('Titre')
    plt.show()

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Juin 2010
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Meme probleme
    Bonjour,

    j'ai exactement le même probleme que toi. je veux tracer un nuage de points, en polaire, dont la taille et la couleur changent en fonction de l'intentité d'une variable. Scatter est parfait pour ca....a ceci pres que j'ai vraiment besoin de pouvoir representer une legende pour faire ma figure proprement. et c'est la que je bloque....

    j'ai pense sinon a passer par matplotlib.patches.circle pour tracer des cercles pour chaqun de mes points, mais je n'ai pas encore reussi.

    qqun a-t-il la solution ? savez-vous comment gerer la legende qui afficherait plusieurs taille de point dans un cadre et les valeurs associées ?
    ou une alternative avec d'autres outils ?

    Merci d'avance

    Raphaël

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/07/2007, 09h34
  2. Réponses: 2
    Dernier message: 22/08/2006, 09h28
  3. Recherche de composant pour tracer des lignes
    Par n1portki dans le forum Composants VCL
    Réponses: 5
    Dernier message: 21/09/2005, 02h44
  4. Recherche de source pour tracer des codes barres
    Par Tardiff Jean-François dans le forum Composants VCL
    Réponses: 3
    Dernier message: 18/10/2004, 17h05
  5. Fonction/méthode pour obtenir l'IP de la machine
    Par sirex007 dans le forum Web & réseau
    Réponses: 3
    Dernier message: 10/04/2003, 15h36

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