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 :

tableau sur un plot?


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 49
    Points : 28
    Points
    28
    Par défaut tableau sur un plot?
    Bonjour a tous
    Alors pour faire cours, j'ai fait un programme matlab qui me donne a l'arrive 2 graphes, sur chaque point, j'ai mis les noms a quoi ces points correspondaient mais voila, mon graphe n'est pas clair du tout donc j'ai eu une idée, a chaque point, j'y ai associé un chiffre
    Maintenant, je cherche le moyen d'affiche un tableau numérote de 1 au(nombre de points) et en face le nom de chaque point a quoi il correspond
    Ici, je vous copie la partie qui affiche le graphe et genere les numeros
    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
    %Graphe1
     
     
     
    figure(1)
     
    plot (X,Y,'o')
     
    title('Distance entre les individus')
     
    datacursormode on
     
     
     
     
     
    figure
     
    plot(X,Y,'+');
     
    hold on
     
    str = num2str((1:numel(X)).','%1d'); 
     
    text(X+0.01,Y+0.01,str)
    Donc que dois je faire afin d'afficher ce fameux tableau?
    Merci d'avance

  2. #2
    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, je n'ai pas tout tout compris mais il me semble que tu aimerais avoir une correspondance entre les numéros que tu as mis près de tes points et les noms associés.

    Tu peux pour cela passer par la legende du graphe

    De manière plus complète tu peux avoir un truc qui ressemble à ca

    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
     
    X=[1 3 5];
    Y=[2 4 6];
     
     
    figure
     
    plot(X,Y,'+');
     
    hold on
     
    str = num2str((1:numel(X)).','%1d'); 
     
    text(X+0.1,Y+0.1,str)
     
    xlim([0 6])
    ylim([1 8])
     
     
    nom{1}='marseille';
    nom{2}='Lille';
    nom{3}='Lyon';
     
    for i=1:numel(X)
     
        leg(i)={[str(i) '-' nom{i}]};
     
    end
     
    legend('v6',leg)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 49
    Points : 28
    Points
    28
    Par défaut
    Deja merci pour ta reponses
    Donc je peux sans doute automatiser tout ca non?
    Pour extraire du texte, la commande,
    C'est bien
    [Text]?
    Car j'ai une matrice exelle avec les villes et les mois et des données
    Mais a l'examen, nous aurons une autre base de données a analyser
    En tout cas encore merci de votre aide :-)
    Ps: je pose des questions, car la je ne suis pas chez moi pour tester

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    Citation Envoyé par freedumz Voir le message
    Donc je peux sans doute automatiser tout ca non?
    Pour extraire du texte, la commande,
    C'est bien
    [Text]?
    Qu'entends-tu par "extraire du texte"?

    La fonction text permet d'afficher du texte sur un graphique en lui précisant un positionnement.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  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
    Je pense que "extraire du texte" correspond en fait à récupérer automatiquement le nom des villes qui sont dans sont fichiers excel.

    Pour ca, tu peux regarder les divers discussions sur le forum qui traitent de ce sujet. Ouverture de fichier excel et récupération des données. Ensuite, suffit de modifier la boucle... Tu peux donc l'automatiser sans soucis.

    La légende serait d'ailleurs mieux à l'extérieur du graphe plutôt qu'à l'intérieur...

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 49
    Points : 28
    Points
    28
    Par défaut
    Merci bcp
    Non, j'ai trouve pour extraire le texte
    Mais je me demandais si je venais a faire un graphe par page(au lieu d'un subplot)
    Ma legende ne serait elle pas mieu dans le graphe en lui meme a ce moment la?
    Premier graphe, j'ai 34 points
    et le second, c'est un cercle avec 12 fleches
    Encore merci pour vos reponses, je tente cela des que je rentre et je vous dit quoi =)

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 49
    Points : 28
    Points
    28
    Par défaut
    Alors pour extraire du texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ville=TEXTE(3:end,1);
    mois=TEXTE(1,2:end);
    et apres, j'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for i=1:A
       legend(ville(:,1))
     
     
    end
    Sauf que la; il ne considere la legende au petit symbol(j'ai mis un rond bleu pour mes points, donc il ne met que la premiere ville et ignore les autres)
    Donc ma dernieres questions, comment faire pour que matlab associe les chiffres au lieu des points
    Merci d'avance

  8. #8
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Peux-tu nous montrer le code complet?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 49
    Points : 28
    Points
    28
    Par défaut
    Voila, je vous ai collé tout le programem(j'y ai rajouté des commentaires pour que vous y voyez plus claire)
    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
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    clear all
    close all
    clc
    filename= input('Quel est le nom du fichier à ouvrir?','s') 
    fprintf ('votre base de donnée est:\n')
    plumat=xlsread(filename)
     
    [A,B] = size(plumat);
    [NUMERIC,TEXTE]=xlsread(filename);
     
    % Données centrées et réduites
     
    fprintf ('La moyenne vaut:\n')
    moyenne= mean(plumat);
    moyenne
    fprintf ('l ecart type vaut:\n')
    ectyp= std(plumat,1);
    ectyp
     
    for i=1:A
        for j=1:B
            plumatCR(i,j)=(plumat(i,j)-moyenne(j))/ectyp(j);
        end
    end
    plumatCR
     
    %Cormat
    cormat=corrcoef(plumatCR);
    [vecp valp]=eig(cormat);
     
    %Test conditions ACP
     
    inertie=valp/trace(valp);
     
    if((inertie(1,1)+inertie(2,2))<0.8)
     
        reply=input('!!! ATTENTION,Conditions ACP non vérifiées!!!Voulez vous quand même poursuivre?(oui/non)?','s');
     
        if(reply=='non')
            fprintf('Fin du programme\n');
        end
    end
     
    if((inertie(1,1)+inertie(2,2))<0.8&reply=='oui'|(inertie(1,1)+inertie(2,2))>0.8)
    end
    %Calcul de la base
     
    u1=vecp(:,1);
    u2=vecp(:,2);
    %extraction des données
     
    ville=TEXTE(3:end,1);
    mois=TEXTE(1,2:end);
     
    %Coordonnées pour le premier graphe
     
    X=plumatCR*u1;
    Y=plumatCR*u2;
    X
    Y
    %Graphe 1
    figure(1)
    plot (X,Y,'o')
    title('Distance entre les individus')
    datacursormode on
     
    plot(X,Y,'o');
    hold on
    str = num2str((1:numel(X)).','%1d');
    text(X+0.01,Y+0.01,str)
    %for i=1:A
       legend(ville(:,1))
     
     
    %end
     
    %Coordonnées(2)
     
    for i=1:B
        temp1= corrcoef(plumatCR(:,i),X);
        xmois(i)=temp1(1,2);
        temp2= corrcoef(plumatCR(:,i),Y);
        ymois(i)=temp2(1,2);
    end
     
    %Graphe2
    figure(2)
    compass(xmois,ymois)
    title('COORDONNEES DES VARIABLES')
    datacursormode on
    Encore merci de votre aide =)

  10. #10
    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
    Salut freedumz,

    La réponse a ta question est dans ma première réponse...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i=1:numel(X)
     
        leg(i)={[str(i) '-' nom{i}]};
     
    end
    Il faut passer par des cellules et non pas par une matrice pour afficher toutes les villes. sinon, tu n'auras qu'un point dans ta légende correspondant à la dernière ville.

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 49
    Points : 28
    Points
    28
    Par défaut
    Merci bcp
    J'ai reussi
    J'ai encore 2 petites questions (si cela ne vous derange pas de m'aider encore une fois)
    La premiere question: Comment puis je mettre ma legende a coté ou en dessous de mon graphe(un subplot?) car ma legende se trouve dans le graphe et cache des points
    et questions suivantes, pourquoi est ce que les nombres a 2 chiffres, il m'affiche 1_ et 2_ ?
    Encore merci pour votre aide

  12. #12
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    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 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Citation Envoyé par Merel Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i=1:numel(X)
     
        leg(i)={[str(i) '-' nom{i}]};
     
    end
    Je préfère ce style d'écriture :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i=1:numel(X)
     
        leg{i}=[str(i) '-' nom{i}];
     
    end
    voire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i=1:numel(X)
     
        leg{i}=sprintf('%s-%s',str(i),nom{i});
     
    end
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 49
    Points : 28
    Points
    28
    Par défaut
    la reponse que tu viens de poster dut, il s'agit juste d'une questions d'esthétique non?
    Je me demande si mon probleme d'affichage et des nombres ne viendrait pas de ma ligne pour afficher
    legend('v6',leg)
    A quoi correspond le v6?
    Merci d'avance

  14. #14
    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
    Oui, tu as raison Dut, je me suis trompé de côté pour les accolades.

    L'option v6 du légend permet d'utiliser des cell. Sans cette option, tu ne peux pas les utiliser.
    C'est expliqué dans l'help de legend.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    help legend
    
    LEGEND('v6',M,...) for a cell array of strings M creates a
        legend compatible with MATLAB 6.5 from the strings in M and
        any additional inputs. LEGEND('v6',AX) for an axes handle AX updates 
        any v6 legends and returns the legend handle.
    Pour le problème des nombres à deux chiffres, il faut utiliser num2str et non pas str

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i=1:numel(X)
     
        leg{i}=[num2str(i) '-' nom{i}];
     
    end

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 49
    Points : 28
    Points
    28
    Par défaut
    Merci pour vos reponses
    Et y a t'il moyen de deplacer ma legende? ou alors la mettre en dehors du graphe?

  16. #16
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    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 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Il y a une propriété Location que l'on peut renseigner à l'appel de LEGEND :

    legend(...,'Location','location') uses location to determine where to place the legend.
    Voir la documentation de la fonction LEGEND :

    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 49
    Points : 28
    Points
    28
    Par défaut
    Merci beaucoup pour l'aide =)
    Je vous dirais ce que ca a donné pour mon examen =)

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 49
    Points : 28
    Points
    28
    Par défaut
    Quand je vais voir dans help, et que j'applique ce qu'il me demande, cela ne fonctionne pas :/
    Donc j'ai tappe legend doc, j'arrive a la page d'aide, je lis jusqu'a ce que je trouve ce qui m'interesse alors la, je vois:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    legend(...,'Location',location) uses location to
    determine where to place the legend. location can
    be either a 1-by-4 position vector ([left bottom width height]) or one of
    the following strings
    , donc je décide d'utiliser celui la: BestOutside

    Alors donc je fais comme il me dise dans le help:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    legend('v6',leg,'location',BestOutside)
    et la j'ai un message d'erreur qui s'affiche comme quoi BestOutside n'est pas une fonction reconnu, meme si je le met entre cote donc je galere un peu :/
    Merci d'avance pour votre aide

  19. #19
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Salut,

    c'est une chaine de caractère qu'il faut lui donner :
    legend('v6',leg,'location','BestOutside');
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  20. #20
    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
    Je crois qu'il y a un problème avec legend pour les classes cell. si tu mets l'option 'v6', il ne comprend plus la position que tu souhaites rentrer...

    Deux solutions :

    Changer legende pour ne plus mettre de classe cell.
    Ou alors changer "manuellement" la position de la légende en passant par les handles.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    lh=legend('v6',leg)
    set(lh,'Position',[0.2 0.8 1 0.1]);
    Après, faut trouver les bonnes coordonnées ;-)

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/09/2005, 22h24
  2. [JSP]affichage d'un tableau sur plusieurs pages
    Par MAJIK_ENIS dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 29/08/2005, 11h21
  3. envoyer un tableau sur le serveur
    Par car dans le forum ASP
    Réponses: 5
    Dernier message: 16/08/2005, 16h23
  4. [CR]Ne pas "couper" un tableau sur 2 pages
    Par neo.51 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 01/03/2005, 14h12
  5. [CR8] Problème tableau sur plusieurs pages???
    Par christophe28 dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 02/11/2004, 15h46

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