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 :

graphique à partir d'une liste


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 27
    Par défaut graphique à partir d'une liste
    Bonjour,
    j'ai un réalisé un graphique à partir de ces lignes de code:
    J est une liste de points et p un angle d'attaque pour un objet qui est lancé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            K=[] #liste des coordonnées des points C
            w=Graphics()
            for k in range (0,len(J)):
                K.append([[(J[k][0]+(0.3*cos(p))).n(50),(J[k][1]+(0.3*sin(p))).n(50)],[(J[k][0]-(0.3*cos(p))).n(50),(J[k][1]-(0.3*sin(p))).n(30)]])
            w=show(line(K[0]+K[1]+K[2]+K[3]+K[4]+K[5]+K[6]+K[7]+K[8]+K[9]+K[10]+K[11]+K[12]+K[13]+K[14],xmin=0,xmax=20,ymin=0,ymax=10),aspect_ratio=1)
            print(w)

    Ca m'affiche une courbe avec des petits traits à chaque point et des longs traits reliant les petits traits. Je voudrais savoir s'il est possible déjà de simplifier le programme ci dessus? Et ensuite, comment supprimer une partie du graphe ou mettre en couleur blanche certaines parties, afin qu'elles ne soient pas visibles.

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Pour commencer tu peux déjà clarifier ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            K=[] #liste des coordonnées des points C
            w=Graphics()
            cs = 0.3 * cos(p)
            sn = 0.3 * sin(p)
            for k in j:
                K.append([[(k[0] + cs).n(50),(k[1] + sn).n(50)],
                          [(k[0] - cs).n(50),(k[1] - sn).n(30)]])
    Ensuite je ne comprend pas:
    K[0]+K[1]+K[2]+K[3]+K[4]+K[5]+.... devrait se résumer avec sum(K) mais K contient des listes de listes donc que veux-tu obtenir avec K[0] + K[1] ?

    Un exemple ?

  3. #3
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 27
    Par défaut
    En fait, je voudrais créer des frisbees (petits traits vus de profil suivant une inclinaison).
    Nous avons déja obtenu une liste avec des points.
    Ensuite, nous avons pensé créer 2 points fictifs à chaque fois en partant du point obtenu précédemment. Voici comment les obtenir :

    Nous avons considéré que la moitié du trait qui relierait le milieu du point initial au point fictif (que nous allons créer) serait égale à r (le rayon du frisbee). Cette portion r représente l'hypothénuse d'un triangle. Nous sommes donc parties de l'hypothèse que l'angle d'attaque d'un frisbee était constante. L'angle d'attaque est l'angle qui est à coté de l'hypothénuse r. Ensuite, nous avons pu utiliser les formules de cosinus afin de déterminer la coordonnée x de ce point fictif et de sinus pour calculer la coordonnée y de ce même point. Nous avons fait de la même manière pour calculer les coordonnées x,y de l'autre point fictif, qui est à la même longueur que l'autre point fictif par rapport au point initial : la longueur entre ces 2 points est donc égale à r aussi et l'angle d'attaque p est toujours le même. Afin de déterminer ses coordonnées, nous avons considéré que la coordonnée x de ce point fictif était de -xf, soit l'inverse de l'autre point fictif. Et pour la coordonnée y = -xf.

    xf=r*cos(p) # avec r = le rayon du frisbee
    yf=r*sin(p)
    K=[] #liste des coordonnées des points C (fictifs qui permettent de représenter le trait du frisbee)
    w=Graphics()
    for k in range (0,len(J)):
    K.append([[(J[k][0]+(xf*cos(p))).n(50),(J[k][1]-(yf*sin(p))).n(50)],[(J[k][0]-(xf*cos(p))).n(50),(J[k][1]-(yf*sin(p))).n(30)]])
    w=show(line(K[0]+K[1]+K[2]+K[3]+K[4]+K[5]+K[6]+K[7]+K[8]+K[9]+K[10]+K[11]+K[12]+K[13]+K[14],xmin=0,xmax=20,ymin=0,ymax=10),aspect_ratio=1)
    print(w)

    #nous avons tracé le graphe. Nous obtenons une droite avec des petits traits censés représenter des frisbees et ces petits traits sont reliés. Nous ne voulons pas cela. Nous voudrions que seul les différents frisbees apparaissent, sans qu'ils soient reliés par des longs traits.

    #Comment faut-il faire pour enlever ces longs traits ? Quelle est la commande possible ?

    nous avons rentrer K[0]+K[1]+K[2]+K[3]+K[4]+K[5]+K[6]+K[7]+K[8]+K[9]+K[10]+K[11]+K[12]+K[13]+K[14] car si nous mettons que K[] nous obtenions un graphe pour 1 seul petit trait. Nous voudrions que tous les traits apparaissent sur un même graphe.
    Comment faire pour simplifier ?
    Merci

  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Si tu me dis que tu n'obtiens pas d'erreur avec cette syntaxe, admettons.

    Et comme ceci, ça le fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
            for i in K:
                w = show(line(i, xmin=0, xmax=20, ymin=0, ymax=10), aspect_ratio=1)
    ?

  5. #5
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 27
    Par défaut
    mais i c'est une variable ? je veux afficher les points de ma liste reliés

  6. #6
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 27
    Par défaut
    K=[] #liste des coordonnées des points C
    w=Graphics()
    from sage.plot.line import Line
    for k in range (0,len(J)):
    K.append([[(J[k][0]+(0.3*cos(p))).n(50),(J[k][1]+(0.3*sin(p))).n(50)],[(J[k][0]-(0.3*cos(p))).n(50),(J[k][1]-(0.3*sin(p))).n(50)]])
    w=show(line(K,xmin=0,xmax=20,ymin=0,ymax=10,aspect_ratio=1,linestyle=None))
    return(w)
    mon programme ne marche pas pourtant, il me semble logique ...

Discussions similaires

  1. [Débutant] Créer un graphique à partir d'une liste
    Par LUCID3 dans le forum Développement Sharepoint
    Réponses: 13
    Dernier message: 23/04/2015, 03h09
  2. Graphique à partir d'une liste.
    Par lesanglier dans le forum SharePoint
    Réponses: 2
    Dernier message: 15/12/2009, 22h05
  3. Réponses: 3
    Dernier message: 19/05/2005, 17h52
  4. Réponses: 3
    Dernier message: 25/04/2005, 15h26
  5. Trouver equation à partir d'une liste de points
    Par scarabee dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 27/05/2004, 17h05

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