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

MATLAB Discussion :

Ajouter une ligne verticale dans un graphique


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 47
    Points : 26
    Points
    26
    Par défaut Ajouter une ligne verticale dans un graphique
    Resalut tout le monde, je voudrai savoir comment je peux ajouter une ligne verticale dans mon graphique a une position t précise ,mon graphique est en 2 dimension, il presente deux axes, t pour les x , et v pour les y .
    cette ligne devra s'arreter aux limites de mon graphique.
    Merci.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 47
    Points : 26
    Points
    26
    Par défaut
    Voila mon bout de code pour faire mes graphiques :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    axes(handles.axes1);plot3(x,y,z,'linewidth',2);  %x,y et z dans 1er axe du gui
    xlabel('x [mm]'); ylabel('y [mm]'); zlabel('z [mm]')
    axes(handles.axes2); plot(t,v),text(t(indicego(1)*200),0 , 'Go' ); hold on 
    %t et v dans 2eme axe
    xlabel('t [s]'); ylabel('v [mm^2/s]') % les labels
    axes(handles.axes1); hold off 
    axes(handles.axes2); hold off
    mon vecteur t contient differentes valeurs de temps, et une seule représente mon indice go dont l'emplacement est à t(indicego(1)*200),je veux juste faire monter une ligne verticale a partir de ce point dans mon graphique,ca devrait ressembler a ce qui est dans la piece jointe (ligne ajoutée a la main)(représente par la ligne noire),dans ce cas par exemple mon indiceGo est a 5secondes.
    Je vous remercie d'avance.
    Images attachées Images attachées  

  3. #3
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 304
    Points : 52 881
    Points
    52 881
    Par défaut
    As-tu cherché un peu sur le forum avant de poser ta question ?

    Lis ceci : Graphe 2D: marqueur

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 47
    Points : 26
    Points
    26
    Par défaut
    Désolé je n'avais pas pensé au mot clé marqueurs, mais j,ai essayé leur methode,dans mon cas, je veux ajouter une ligne dans un graphe 2d,quand je mets juste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    hold all;
    axes(handles.axes2);plot(indicego,t)
    ca m'affiche la ligne correspondante a la valeur indicego au moment t,par contre quand je veux afficher cette ligne en plus de mes autres graphiques:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    hold all;
    axes(handles.axes2);plot(t,v) ;plot(indicego,t) ;
    Ca m'affiche juste le premier plot,j'ai eu beau mettre des hold partout (pacque a mon avis c ca le probleme),mais apparement que non.
    j'attends vos suggestions
    bien a vous

  5. #5
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 304
    Points : 52 881
    Points
    52 881

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 47
    Points : 26
    Points
    26
    Par défaut
    pareil, ca n'y change rien
    Ma fonction d'affichage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    axes(handles.axes1);plot3(x,y,z,'linewidth',2);  
    xlabel('x [mm]'); ylabel('y [mm]'); zlabel('z [mm]')
    hold on
    axes(handles.axes2);plot(t,v) ; plot(indicego,t);hold on
    xlabel('t [s]'); ylabel('v [mm^2/s]')
    axes(handles.axes1); hold off 
    axes(handles.axes2); hold off
    Merci d'avance.

  7. #7
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 304
    Points : 52 881
    Points
    52 881
    Par défaut
    Pourquoi as-tu deux objet Axes (axes1 et axes2) ?
    Tu devrais tout tracer sur un seul

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 47
    Points : 26
    Points
    26
    Par défaut
    ce sont les axes de mon gui ,j'ai deux fenetres graphiques sur mon interface,la premiere contiendra un graphique en 3d, la 2eme comprend juste le profil vitesse en fonction du temps, et c'est la que je veux ajouter une ligne verticale.

  9. #9
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 304
    Points : 52 881
    Points
    52 881
    Par défaut
    j'avais mal regardé ton code. La fonction HOLD est mal placée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    axes(handles.axes2);plot(t,v) ; hold on ; plot(indicego,t);

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 47
    Points : 26
    Points
    26
    Par défaut
    Aussi bizzare que ca puisse parraitre, ca passe pas, ca donne tjrs le meme probleme,c'est peut-etre une histoire de version de matlab, la mienne :
    version 7.0.0.19920(R14).

  11. #11
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 304
    Points : 52 881
    Points
    52 881
    Par défaut
    Essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    axes(handles.axes2);plot(t,v,'r-',indicego,t,'b-');

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 47
    Points : 26
    Points
    26
    Par défaut
    Tout ce que ca fait, c'est afficher le meme contenu mais avec une seul couleur, et le trait vertical n'y ai toujours pas.
    Enfin, je vais continuer a barbouiller dessus, mais votre aide est toujours la bienvenue.
    Bien a vous.

  13. #13
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 304
    Points : 52 881
    Points
    52 881
    Par défaut
    As-tu vérifié les valeurs contenues dans les variables ?

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 47
    Points : 26
    Points
    26
    Par défaut
    Pour ce qui est des valeurs contenues dans mes axes x,y,z,v,t il n'y a aucun probleme etant donné que ca donne le bon affichage,par contre, la variable indicego contient une seule valeur,elle represente le moment t ou on doit tracer la ligne verticale.

  15. #15
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 304
    Points : 52 881
    Points
    52 881
    Par défaut
    En relisant ton second message, je me demande pourquoi tu faisais :Si c'est bien la bonne valeur pour t, alors essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    p=plot(t(indicego([1 1])*200),[0 8E4],'k-');
    set(p,'linewidth',3)

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 47
    Points : 26
    Points
    26
    Par défaut
    c'etait juste un essai de ma part, mais j'etais dans le faux, car je me disais que l'indicego correspondait a un moment precis situé a la position indicego*200 dans le vecteur t, et c'est le cas, mais ca correspondait a dessiner un point dans ce cas.

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 47
    Points : 26
    Points
    26
    Par défaut
    aidez moi svp, c'est un probleme simple, mais qui ne veut pas se resoudre apparement.
    Merci d'avance.

  18. #18
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Un problème se résoud rarement tout seul
    Il faut peut-être reprendre depuis le début en donnant les valeurs des données que tu utilises pour ton 2ème axe (t,v et indicego)

    Un exemple pour avoir une ligne verticale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    x=0:0.1:1;
    y=sin(x);
    plot(x,y);
    line([0.5;0.5],ylim);
    Si cela ne fonctionne pas dans ton cas, explique en quoi il est différent.

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 47
    Points : 26
    Points
    26
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    axes(handles.axes2);plot(t,v);hold on;line([indice indice],ylim);
    La est la ligne magique
    Je ne sais pas quelle modification a été faite,mais en affichant ma variable indicego par hazard, je me suis rendu compte que c'etait plutot un vecteur.
    Merci a tous pour votre aide precieuse.

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

Discussions similaires

  1. Ajouter une ligne manuellement dans un GridView
    Par Juju54350 dans le forum ASP.NET
    Réponses: 12
    Dernier message: 25/11/2010, 15h56
  2. Réponses: 4
    Dernier message: 02/06/2009, 21h28
  3. Ajouter une ligne vide dans un datagrid
    Par aallal dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 15/10/2008, 12h30
  4. rajout d'une ligne variable dans un graphique
    Par potili2 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 16/05/2008, 17h24
  5. Comment tracer une ligne verticale dans un graphique
    Par developpeur82 dans le forum MATLAB
    Réponses: 3
    Dernier message: 03/04/2007, 14h06

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