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 courbe orientée


Sujet :

Calcul scientifique Python

  1. #1
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut matplotlib courbe orientée
    Bonjour,
    Je souhaite représenter un portrait de phase en forme de spirale mais ma question pourrait porter sur une courbe normale.
    Pour indiquer le sens de parcours de la courbe, je souhaiterais que quelques flèches soient portées dessus et mon ami google ne m'a rien apporté.
    Pas d'aide par mp.

  2. #2
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    Salut,

    Je ne sais pas si c'est possible, mais tu peux toujours t'en sortir en placant une fleche où tu veux sur le graph. J'avoue que c'est moche, mais bon voici un exemple:
    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
    # -*- coding:Utf-8 -*-
     
    from __future__ import division
    import matplotlib.pyplot as plt
    import numpy as np
     
    # Data to plot
    x = np.arange(1,20,0.1)
    y = np.sin(x)
     
    # Define figure
    figure = plt.figure(1)
    ax = figure.add_subplot(111)
     
    # Plot data
    ax.plot(x, y, color='blue')
     
    # Add an arrow
    x, y, dx, dy = x[20], y[20], x[21]-x[20], y[21]-y[20]
    plt.quiver(x, y, dx, dy, scale_units='xy', angles='xy', scale=1, width=0.005)
    plt.grid()
    plt.show()
    Nom : figure_1.png
Affichages : 1103
Taille : 34,4 Ko
    si j'étais toi, je me pencherais sur streamplot(). Y'a peut-être moyen d'adapter cette function à tes besoins.

    Ju

  3. #3
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Ok, merci Julien.
    J'imaginais qu'il existait des markers adaptés mais apparemment, non.
    Je vais creuser streamplot().
    Pas d'aide par mp.

  4. #4
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    Citation Envoyé par marco056 Voir le message
    Ok, merci Julien.
    J'imaginais qu'il existait des markers adaptés mais apparemment, non.
    Je vais creuser streamplot().
    Ouais. Dommage. Il y a bien un marqueur en forme de triangle, mais il est orientable que dans 4 directions (haut, bas, droite et gauche). ça ne s'adapte pas bien à tous les coups.

  5. #5
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Non, j'espérais des "arrows" comme en LaTeX mais apparemment, rien ne correspond en python.
    Si rien ne convient, je vais utiliser un autre outil (scilab, LaTeX ou autre) car mes spirales ne ressemblent à rien.
    Au cas où, voilà mon code.

    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
     
    import numpy as np
    import matplotlib.pyplot as plt
    from scipy.integrate import odeint
     
    def f(y,t):
        if t<30:
            return [y[1],-8*y[0]+0.1*y[1]]
        else:
            return [y[1],-20*y[0]]
    t=np.linspace(0,40,4000)
    y=odeint(f,[0.1,0],t)
    #plt.subplot(2, 2, 1)
    plt.plot(t,y[:,0])
    plt.show()
     
    plt.clf()
    # plt.axis('equal')
    #plt.subplot(2, 2, 4)
    plt.plot(y[:,0],y[:,1])
    plt.show()
    Pas d'aide par mp.

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Points : 692
    Points
    692
    Par défaut
    Et avec matplotlib.patches.Arrow ? Comme sur cet exemple.

  7. #7
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Citation Envoyé par __dardanos__ Voir le message
    Et avec matplotlib.patches.Arrow ? Comme sur cet exemple.
    Merci, mais je souhaite des flèches sur la courbe, courbées et tout...
    Pas d'aide par mp.

Discussions similaires

  1. MATPLOTLIB - Tracer plusieurs courbes
    Par jouclar dans le forum Général Python
    Réponses: 3
    Dernier message: 12/10/2012, 14h31
  2. orientation d'une vue 3D avec matplotlib
    Par awalter1 dans le forum Calcul scientifique
    Réponses: 1
    Dernier message: 01/08/2012, 10h56
  3. Simple courbe avec matplotlib
    Par LinuxUser dans le forum GUI
    Réponses: 10
    Dernier message: 14/02/2012, 11h42
  4. [matplotlib] tracé de courbes multiples et légende
    Par gwenc_hlan dans le forum Calcul scientifique
    Réponses: 1
    Dernier message: 23/03/2009, 18h40
  5. [matplotlib] Plusieurs courbes
    Par thibaultG dans le forum Calcul scientifique
    Réponses: 5
    Dernier message: 14/06/2008, 16h58

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