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 :

Affichage de coordonnées de points [Débutant]


Sujet :

MATLAB

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 401
    Points : 102
    Points
    102
    Par défaut Affichage de coordonnées de points
    Bonjour à tous,

    J'aurai besoin d'afficher les coordonnées de certains points sur un graphique préalablement tracé. Je voudrais que ces points soit marqués par un petit rond rouge à côté duquel il y aurait les coordonnées (abscisse,ordonnée) correspondantes. Est-ce possible de faire ceci sachant que je voudrais le faire seulement sur une partie d'une figure comportant des subplot ?

    Par exemple, voici un code d'affichage que j'utilise :

    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
    figure(1)
    subplot(2,2,1)
    plot(A50)
    title('signal A50 : Bruit+Reflux+Sinus')
    xlabel('indices')
    ylabel('valeurs indices')
    hold on
    subplot(2,2,2)
    plot(A1)
    title('signal A1 : décimation de A50 du facteur 50')
    xlabel('indices')
    ylabel('valeurs indices')
    hold on
    subplot(2,2,3)
    plot(AL50)
    title('signal AL50 :Bruit+Reflux')
    xlabel('indices')
    ylabel('valeurs indices')
    hold on
    subplot(2,2,4)
    plot(AL1)
    title('signal AL1 :Bruit+Reflux')
    xlabel('indices')
    ylabel('valeurs indices')
    Je voudrais sur plot(AL50) afficher comme je le disais plus haut le point (2000,0.2).

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    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 316
    Points : 52 947
    Points
    52 947
    Par défaut
    Premièrement, les hold on dans ton code ne servent à rien.
    On utilise cette commande pour superposer plusieurs tracés dans un même objet Axes crée soit avec la fonction axes, soit avec la fonction subplot

    Pour revenir à ta question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    figure
    subplot(2,2,3)
    plot(AL50) 
    hold on
    plot(2000,0.2,'ro','markerfacecolor','r')

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 401
    Points : 102
    Points
    102
    Par défaut
    Merci Dut pour la rapidité de ta réponse.

    Tu veux donc dire que je peux me passer des hold on entre les subplot si je comprends bien mais que je dois l'utiliser par contre dans mon problème précis lorsque je veux afficher courbe et point rouge :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    subplot(2,2,3)
    plot(AL50)
    hold on
    plot(2000,0.2,'ro','markerfacecolor','r')
    title('signal AL50 :Bruit+Reflux')
    xlabel('indices')
    ylabel('valeurs indices')
    Y a-t-il moyen de jouer sur la grosseur de ce point rouge qui apparaît i.e. sur son diamètre ? Est-il également possible d'afficher "(2000 0.2)" à côté de ce point et en rouge ? Je souhaiterais en effet avoir le positionnement du point et la valeur de ses coordonnées.

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    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 316
    Points : 52 947
    Points
    52 947
    Par défaut
    Citation Envoyé par abel413 Voir le message
    Y a-t-il moyen de jouer sur la grosseur de ce point rouge qui apparaît i.e. sur son diamètre ?
    Il faut renseigner la propriété MarkerSize (comme pour la propriété MarkerFaceColor)
    Est-il également possible d'afficher "(2000 0.2)" à côté de ce point et en rouge ?
    Utilise la fonction text

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Points : 776
    Points
    776
    Par défaut
    bonjour,

    tu peux jouer sur tous les paramètres de ton "point rouge". Regarde l'aide et plus particulièrement la partie LineSpec:

    Pour ton problème, voici ce que tu peux faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    plot(2000,0.2,'ro','markerfacecolor','r','markersize',10)
    text(2000+0.2,0.2,'2000/0.2')
    Le markersize te permet de définir la taille de ton point. La commande text te permet de mettre du texte où tu veux. Il suffit de définir sa position (x,y). Ici, j'ai utilisé 2000+0.2 pour x et 0.2 pour y.

    Cheers!

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 401
    Points : 102
    Points
    102
    Par défaut
    Je vous remercie Dut et Merel pour vos réponses. Pour la taille du point rouge j'utilise simplement la ligne suivante qui me donne un résultat convenable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plot(maxima_A50_1(1),maxima_A50_1(2),'ro','markerfacecolor','r','markersize',5)
    On obtient quelque chose comme suit :



    Les points que je voulais afficher sont en rouge.

    Merel, merci pour ta réponse. D'après ce que tu à écrit, je comprends qu'il s'agit d'une sorte de "bricolage" : on utilise text pour écrire ce que je voulais à un endroit bien précis. Je vais donc me passer de ceci de toute façon car ma figure précédent serait trop surchargée. En revanche je souhaiterais afficher une légende avec le point rouge, une sorte de rectangle qui contiendra le point rouge et sa signification : "points choisis pour le calcul de vitesse et de temps de reflux". Est-ce possible de faire une telle légende et de la placer par exemple entre les 4 figures ?

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 401
    Points : 102
    Points
    102
    Par défaut
    Après quelques recherches, je suis parvenu à afficher des légendes de façon un peu "magique" je dois dire. J'ai simplement rajouté la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    legend('courbe','points calculs reflux','Location','SouthEast')
    Cela à chaque fois en dessous de la ligne du title dans le code ci-dessous :

    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
    68
    figure(1)
    subplot(2,2,1)
    plot(A50)
    hold on
    plot(maxima_A50_1(1),maxima_A50_1(2),'ro','markerfacecolor','r','markersize',5)
    hold on
    plot(maxima_A50_2(1),maxima_A50_2(2),'ro','markerfacecolor','r','markersize',5)
    hold on
    plot(maxima_A50_3(1),maxima_A50_3(2),'ro','markerfacecolor','r','markersize',5)
    hold on
    plot(maxima_A50_4(1),maxima_A50_4(2),'ro','markerfacecolor','r','markersize',5)
    hold on
    plot(minima_A50_1(1),minima_A50_1(2),'ro','markerfacecolor','r','markersize',5)
    hold on
    plot(minima_A50_2(1),minima_A50_2(2),'ro','markerfacecolor','r','markersize',5)
    hold on
    plot(minima_A50_3(1),minima_A50_3(2),'ro','markerfacecolor','r','markersize',5)
    hold on
    plot(minima_A50_4(1),minima_A50_4(2),'ro','markerfacecolor','r','markersize',5)
    hold on
    plot(2500,A50(2500),'ro','markerfacecolor','r','markersize',5)
    hold on
    plot(2600,A50(2600),'ro','markerfacecolor','r','markersize',5)
    legend('courbe','points calculs reflux','Location','SouthEast')
    hold on
    title('signal A50 : Bruit+Reflux+Sinus')
    xlabel('indices')
    ylabel('valeurs indices')
    subplot(2,2,2)
    plot(A1)
    hold on
    plot(maxima_A1_1(1),maxima_A1_1(2),'ro','markerfacecolor','r','markersize',5)
    hold on
    plot(minima_A1(2,1),minima_A1(2,2),'ro','markerfacecolor','r','markersize',5)
    hold on
    plot(minima_A1_1(1),minima_A1_1(2),'ro','markerfacecolor','r','markersize',5)
    hold on
    plot(53,A1(53),'ro','markerfacecolor','r','markersize',5)
    hold on
    title('signal A1 : décimation de A50 du facteur 50')
    legend('courbe','points calculs reflux','Location','SouthEast')
    xlabel('indices')
    ylabel('valeurs indices')
    subplot(2,2,3)
    plot(AL50)
    hold on
    plot(2000,AL50(2000),'ro','markerfacecolor','r','markersize',5)
    hold on
    plot(minima_AL50_1(1),minima_AL50_1(2),'ro','markerfacecolor','r','markersize',5)
    hold on
    plot(3000,AL50(3000),'ro','markerfacecolor','r','markersize',5)
    hold on
    title('signal AL50 :Bruit+Reflux')
    legend('courbe','points calculs reflux','Location','SouthEast')
    xlabel('indices')
    ylabel('valeurs indices')
    subplot(2,2,4)
    plot(AL1)
    hold on
    plot(40,AL1(40),'ro','markerfacecolor','r','markersize',5)
    hold on
    plot(minima_AL1_1(1),minima_AL1_1(2),'ro','markerfacecolor','r','markersize',5)
    hold on
    plot(60,AL1(60),'ro','markerfacecolor','r','markersize',5)
    title('signal AL1 :Bruit+Reflux')
    legend('courbe','points calculs reflux','Location','SouthEast')
    xlabel('indices')
    ylabel('valeurs indices')
    Voici le résultat :



    C'est bien mais, voyez-vous j'aimerais qu'il n'y ait donc qu'un cadre légende de la sorte et qu'il soit situé dans la zone centrale entre les 4 images.

  8. #8
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    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 316
    Points : 52 947
    Points
    52 947
    Par défaut
    Tu n'as besoin que d'un seul appel à hold on pour chaque objet Axes créé avec subplot

    D'autre part, il est plus robuste de préciser les identifiants des objets graphique avec legend.

    Voici ton code amélioré :

    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
    subplot(2,2,1)
     
    p(1) = plot(A50);
    hold on
    p(2) = plot(maxima_A50_1(1),maxima_A50_1(2),'ro','markerfacecolor','r','markersize',5);
    plot(maxima_A50_2(1),maxima_A50_2(2),'ro','markerfacecolor','r','markersize',5)
    plot(maxima_A50_3(1),maxima_A50_3(2),'ro','markerfacecolor','r','markersize',5)
    plot(maxima_A50_4(1),maxima_A50_4(2),'ro','markerfacecolor','r','markersize',5)
    plot(minima_A50_1(1),minima_A50_1(2),'ro','markerfacecolor','r','markersize',5)
    plot(minima_A50_2(1),minima_A50_2(2),'ro','markerfacecolor','r','markersize',5)
    plot(minima_A50_3(1),minima_A50_3(2),'ro','markerfacecolor','r','markersize',5)
    plot(minima_A50_4(1),minima_A50_4(2),'ro','markerfacecolor','r','markersize',5)
    plot(2500,A50(2500),'ro','markerfacecolor','r','markersize',5)
    plot(2600,A50(2600),'ro','markerfacecolor','r','markersize',5)
     
    legend(p,{'courbe','points calculs reflux'},'Location','SouthEast')
    title('signal A50 : Bruit+Reflux+Sinus')
    xlabel('indices')
    ylabel('valeurs indices')
    Pour ton problème de légende unique, je trouve personnellement que même si les quatre légendes sont les mêmes, cela ne nuit pas vraiment à la lisibilité des graphiques..

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 401
    Points : 102
    Points
    102
    Par défaut
    D'accord merci bien Dut, effectivement c'est plus propre comme cela. Je te remercie pour cette aide détaillée et je vais laisser les légendes comme cela car après tout c'est assez bien de la sorte.

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

Discussions similaires

  1. Affichage des coordonnées d'un point en Opencv C++
    Par zowpro dans le forum OpenCV
    Réponses: 1
    Dernier message: 20/02/2014, 14h40
  2. Réponses: 2
    Dernier message: 16/02/2014, 20h53
  3. Réponses: 0
    Dernier message: 08/03/2011, 14h58
  4. Réponses: 5
    Dernier message: 30/05/2006, 14h04

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