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 :

Affichage d'une courbe de plusieurs couleurs - Python 3.4 [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2020
    Messages : 4
    Par défaut Affichage d'une courbe de plusieurs couleurs - Python 3.4
    Bonjour à tous !

    Je suis très novice en matière de programmation et j'ai en ce moment une problématique à propos d'une courbe à tracer avec Python :

    A partir d'un tableau me donnant la latitude, la longitude, et la vitesse d'un véhicule à un instant t (t allant de 1 à 633s), je dois tracer la courbe (latitude, longitude) où chaque point aura une couleur différente en fonction de la vitesse associée à ce point (par exemple, vert pour une vitesse faible jusqu'au rouge pour les vitesses les plus élevées).

    J'avais pensé à prendre une vitesse extrême V_ext (la plus grande ou la plus faible) et lui associer une couleur C_ext (rouge ou verte, selon le code RGB de 0 à 255 pour chaque gamme). Ensuite, à partir de la vitesse et de la couleur désignée, faire une boucle permettant de changer la couleur pour les autres vitesses V_t (si ma vitesse V_t est supérieure de tant à V_ext, alors la jauge du rouge augmente de +25/255 et celle du vert de -10/255 par exemple).

    Aussi, il me faudrait pouvoir afficher la courbe de la longitude en fonction de la latitude (trajet du véhicule) et que la couleur de chaque point soit associé à la vitesse. Dans ce cas, j'avais pensé à faire une courbe (x=latitude,y=longitude,z=vitesse) projetée sur l'axe z pour pouvoir lier toutes les données.

    J'ai réalisé plusieurs recherches sur internet mais soit ce n'est pas exactement ce que je souhaite, soit les programmes me sont vraiment compliqués à comprendre étant donné que je débute...

    J'espère avoir été clair et je vous remercie de votre aide !

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Salut,

    Pour tracer des courbes il y a matplotlib, je ne sais pas si tu connais...

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 839
    Billets dans le blog
    1
    Par défaut
    Bonsoir

    Ton problème possède plusieurs difficultés
    • tracé de courbes en couleurs (mathplotlib, python(x, y), pyplot, ...)
    • évaluation de vitesse (vite/lentement avec tout le flou qui se cache derrière ces deux adverbes)
    • latitude/longitude (cartographie ?)
    • novice en prog


    Perso je partirais sur la base cartographie (QGis, logiciel opensource écrit en Python et dans lequel on peut programmer ses propres applets Python) mais c'est tout de même clairement un peu au dessus d'un novice en prog (j'ai fait un stage QGis de 5 jours en décembre dernier et j'ai à peine effleuré cet outil si puissant).

    Ou alors tenter déjà une prévisu de ce que donnera ta courbe avec excel. C'est rapide à faire, te sufft de positionner tes points en x/y/z sur 3 colonnes (tu peux même convertir les lat/lon en flottant) puis demander à afficher ces points sur une courbe 3D. Ainsi avant de te lancer dans un truc Python tu aurais une petite idée du résultat...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2020
    Messages : 4
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Bonsoir

    Ton problème possède plusieurs difficultés
    • tracé de courbes en couleurs (mathplotlib, python(x, y), pyplot, ...)
    • évaluation de vitesse (vite/lentement avec tout le flou qui se cache derrière ces deux adverbes)
    • latitude/longitude (cartographie ?)
    • novice en prog


    Perso je partirais sur la base cartographie (QGis, logiciel opensource écrit en Python et dans lequel on peut programmer ses propres applets Python) mais c'est tout de même clairement un peu au dessus d'un novice en prog (j'ai fait un stage QGis de 5 jours en décembre dernier et j'ai à peine effleuré cet outil si puissant).

    Ou alors tenter déjà une prévisu de ce que donnera ta courbe avec excel. C'est rapide à faire, te sufft de positionner tes points en x/y/z sur 3 colonnes (tu peux même convertir les lat/lon en flottant) puis demander à afficher ces points sur une courbe 3D. Ainsi avant de te lancer dans un truc Python tu aurais une petite idée du résultat...

    Merci beaucoup de ta réponse !

    J'ai déjà tracé la courbe longitude/latitude et j'ai des vitesses entre 0 et 100km/h. Mettons qu'on dise que rouge représente 100km/h (le plus vite) et le vert 0km/h (le plus lent). Je que je galère à faire c'est colorer la courbe avec des couleurs correspondant à chaque vitesse entre 0 et 100km/h Je cherche des exemples depuis des heures voire des jours mais toujours rien... Ca marche avec les données de l'exemple mais dès que je mets avec les miennes ça ne fonctionne plus...

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Tu as utilisé quoi pour tracer ta courbe ? Peux-tu donner une image ?

    Avec matplotlib on peut avoir plusieurs couleurs....

  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
    Voici ce qu'il vous faut :

    https://matplotlib.org/3.1.3/gallery...ons-scatter-py

    à quelquechose prêt que ça vous donnera des points, et non pas une courbe, mais ce sera déjà un très bon début.

    On vous parle de graphe 3D, mais vous en avez pas besoin du tout. Si justement vous avez la couleur, un graphe 2D des positions x,y occupé par le véhicule, puis un code couleur pour la vitesse, ca suffit !

    Après si l'on veut vraiment des "lignes", qui relient les points, alors :
    - soit on fait une ligne noir + les points en couleur (le plus simple)
    - soit on fait une ligne en couleur, mais là c'est compliqué. On peut s'inspiré de ça :

    https://matplotlib.org/3.2.1/gallery...ored_line.html

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 839
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par nao199 Voir le message
    Ca marche avec les données de l'exemple mais dès que je mets avec les miennes ça ne fonctionne plus...
    Citation Envoyé par Beginner. Voir le message
    Tu as utilisé quoi pour tracer ta courbe ? Peux-tu donner une image ?
    Ou même ton code source...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #8
    Membre confirmé
    Homme Profil pro
    Curieux
    Inscrit en
    Avril 2020
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2020
    Messages : 114
    Par défaut
    Bonjour,

    pour l'exemple j'ai un soucis avec la légende et la couleur des points. Perso je ferais comme cela
    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
    import matplotlib.pyplot as plt
     
    x = [1,2,3,4,5,6,7,8,9,10,11,12,13]
    y = [4,1,3,6,9,8,6,3,7,9,45,29,12]
    size = [100,500,100,500]
     
    for i in range(len(x)):
        if y[i]<10:
            plt.scatter(x[i], y[i], s=5, c='coral')
        if y[i]>10:
            plt.scatter(x[i], y[i], s=5, c='lightblue')
     
    plt.title('Nuage de points')
    plt.xlabel('x')
    plt.ylabel('y')
    plt.show()
    C'est certainement perfectible ^^, c'est juste une idée.

    Edit:

    et peut être en plus propre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import matplotlib.pyplot as plt
     
    plt.clf()
    x = [1,2,3,4,5,6,7,8,9,10,11,12,13]
    y = [4,1,3,6,39,8,6,3,7,9,45,29,12]
     
    plt.scatter(x,y,c=y)
    plt.title('Nuage de points')
    plt.xlabel('x')
    plt.ylabel('y')
    cbar= plt.colorbar()
    cbar.set_label("elevation (m)", labelpad=+1)
    plt.show()

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

Discussions similaires

  1. [Artichow] Dessiner une courbe avec plusieurs couleurs
    Par m_jaz3 dans le forum Bibliothèques et frameworks
    Réponses: 13
    Dernier message: 03/11/2008, 16h26
  2. Affichage d'un texte avec plusieurs couleurs
    Par steeves5 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/04/2008, 14h22
  3. affichage d'une courbe a partir d'un tableau de point
    Par topzozo dans le forum Tkinter
    Réponses: 2
    Dernier message: 30/05/2007, 12h19
  4. [Conception] Affichage d'une requete sur plusieurs tables
    Par djinko dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/04/2007, 14h43
  5. [Débutant] Affichage d'une courbe au fur et à mesure
    Par ordepedro dans le forum MATLAB
    Réponses: 5
    Dernier message: 13/01/2007, 15h55

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