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 :

Pointeur souris sur figure


Sujet :

MATLAB

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut Pointeur souris sur figure
    Bonjour,

    J'ai un fichier de données de la forme suivante :

    1 Y:\copy\09\02\11\00\090211_00000038.pro G1 1243.18 87.33 1243.30 20.00 4.00 17038.09 4.26 3.00 74.00 95.00
    2 Y:\copy\09\02\11\00\090211_00004677.pro G1 1219.79 123.79 1219.92 27.00 8.00 17940.57 4.49 2.88 73.00 94.00
    3 Y:\copy\09\02\11\00\090211_00030159.pro G2 1416.45 212.14 1416.59 31.00 9.00 20431.22 5.11 2.75 73.00 93.00

    [...]
    1ere colonne : numéro du fichier (N° de ligne)
    2ème colonne : directory du fichier
    3ème colonne : type de groupe du fichier
    4,5,etc.. colone : données sur le fichier

    j'utilise ensuite GSCATTER pour plotter les données deux à deux en gardant la caractéristique du type de fichier (G1,G2,G3 etc..)


    J'aimerais maintenant pouvoir afficher le n° de ligne ou mieux, la directory quand je clic sur le point correspondant dans la figure..

    Est ce possible?

    Je ne sais pas si la réponse se trouve dans la FAQ à Comment mettre une étiquette à mes points ? mais, la page ne s'ouvre plus...

    Merci

  2. #2
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Tu peux utiliser :


  3. #3
    Expert confirmé
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Points : 4 039
    Points
    4 039
    Par défaut
    Avec datacursormode:
    Customizing Data Cursor Text

    Autres possibilités:
    Customizing Data Exploration Tools

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut
    Bonjour,

    Citation Envoyé par kmaniche Voir le message
    Tu peux utiliser :

    Je ne vois pas trop le moyen de configurer GINPUT pour qu'il me sorte autre chose que la position des points.


    Citation Envoyé par tug83 Voir le message
    Avec datacursormode:
    Customizing Data Cursor Text
    En regardant un peu ça, je suis tombé sur :

    Select Text Update Function — Opens an input file dialog for you to navigate to and select an M-file to use to format text in datatips you subsequently create

    When you select Edit Text Update Function for the first time, an editor window opens with the default text update callback, which consists of the following code:

    function output_txt = myfunction(obj,event_obj)
    % Display the position of the data cursor
    % obj Currently not used (empty)
    % event_obj Handle to event object
    % output_txt Data cursor text string (string or cell array of strings).

    pos = get(event_obj,'Position');
    output_txt = {['X: ',num2str(pos(1),4)],...
    ['Y: ',num2str(pos(2),4)]};

    % If there is a Z-coordinate in the position, display it as well
    if length(pos) > 2
    output_txt{end+1} = ['Z: ',num2str(pos(3),4)];
    end

    You can modify this code to display properties of the graphics object other than position. If you want to do so, you should first save this code to an M-file before changing it, and select that file if you want to revert to default datatip displays during the same session.

    If for example you save it as def_datatip_cb.m, and then modify the code and save it to another M-file, you can then choose between the default behavior and customized behavior by choosing Select Text Update Function from the context menu and selecting one of the callbacks you saved.

    See the Examples section of the datacursormode reference page for more information on using data cursor objects and update functions. Also see the example of customizing datatip text in Using Data Tips to Explore Graphs in the MATLAB Data Analysis documentation.
    Je pense que ça correspond. Hormis le fait que j'ai pas tout compris la manip, je dois vraisemblablement avoir un version trop vielle de matlab car je n'ai pas les onglets nécessaires :




    Merci de l'aide.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut
    Je ne sais pas si j'ai été super clair. Je résume le problème :
    Imaginons 3 vecteurs :

    -Le temps t = [1:10]
    -data_X = [4 5 8 7 8 5 6 1 4 5]
    -data_Y = [7 5 8 6 2 1 4 5 8 4]

    Mon plot des nuages de point se fait entre data_X et data_Y mais je veux avoir la valeur de t quand je clic sur le point de la figure correspondant.

    Merci

  6. #6
    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 828
    Points
    14 828
    Par défaut
    Tu peux combiner GINPUT (qui te retournera la position cliquée [x,y]) et GTEXT.
    Mais c'est à toi de déterminer ce que tu vas afficher en fonction des valeurs récupérées.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut
    Ok mais GINPUT va me retourner les valeurs approximatives du point, pour aller chercher les véritables coordonnées et ainsi pouvoir définir correctement t comment fait on? Il faudrait une sorte de DATATIP non?

    Merci

    EDIT : je viens de voir qu'en prenant le Data Cursor et pointant les points directement sur la figure, click droit et Export Cursor Data to Workspace, il ressortait l'indice des positions de la données dans les vecteurs, ce qui est pas mal et me va très bien, je n'ai plus desoin de connaitre les coordonnées de X et Y.

  8. #8
    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 828
    Points
    14 828
    Par défaut
    Oui effectivement.
    Tu peux alors peut-être essayer avec DATACURSORMODE (ça revient un peu à ce que proposait tug mais en plus compliqué vu que ta version n'a pas les éléments nécessaires).
    Par contre comme moi j'ai les lignes Edit/Select dans ma version je ne sais pas quelles peuvent être les proprités du datacursormode dans ta version

    Essayes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dcm=datacursormode(gcf)
    get(dcm)
    Pour voir quelles propriétés sont disponibles.
    Si tu as une propriété UpdateFcn, tu peux utiliser la méthode de tug, sauf qu'au lieu d'accéder à la fonction avec le menu il faudra créer la fonction dans l'éditeur et "setter" la propriété à la main.

    Sinon il te faudra récupérer la position "à la main".

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    >> dcm=datacursormode(gcf)
    get(dcm)
     
    dcm =
     
    	graphics.datacursormanager
     
                  Enable: 'on'
        SnapToDataVertex: 'on'
            DisplayStyle: 'datatip'
               UpdateFcn: []
                  Figure: [1x1 figure]
    Sinon je fais un rappel de mon EDIT : Le Export Cursor Data to Workspace (propriété quand on fait click droit avec DataCursor sur la figure directement) me renvoit l'index du point dans DataIndex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    cursor_info = 
     
           Target: 152.0140
         Position: [5 4 1]
        DataIndex: 10
    Mais je ne vois pas comment récupérer cette variable mais cela me suffirait amplement !

    Merci

  10. #10
    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 828
    Points
    14 828
    Par défaut
    Utilise la UpdateFcn ce sera plus simple (et là tu récupèreras ce que tu récupères avec l'export).

    Donc dans l'éditeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function output_text=updatefcn_data(obj,event_obj)
    pos = get(event_obj,'Position');
    output_text = {['Time: ',num2str(pos(1))],...
        ['Amplitude: ',num2str(pos(2))]};
    Ailleurs (en ligne de commande pour tester) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    plot(1:10,1:10);
    dcm=datacursormode(gcf);
    set(dcm,'UpdateFcn',@updatefcn_data);
    datacursormode on
    Y'a plus qu'à cliquer (enfin chez moi ça fonctionne)

    La difficulté étant bien sûr ensuite de récupérer dans la UpdatFcn les données qui t'intéresse. Pour cela une utilisation de GET/SETAPPDATA me parait appropriée.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut
    Tout d'abord pour récupérer la variable DataIndex :

    Ce qui pourrait me suffire

    Ensuite, merci pour ta fonction, effectivement elle est plus pratique que DataCursor .. Seulement je suis allé voir l'aide GET/SETAPPDATA, et disons que l'aide ne m'aide pas vraiment.. qu'est ce que value? name?, j'ai pas l'once d'une idée de son exploitation.

    Merci

  12. #12
    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 828
    Points
    14 828
    Par défaut
    Dans l'UpdateFcn tu as ce que tu veux dans la variable event_obj (qui correspond à cursor_info).

    Ma fonction n'est pas plus pratique que DataCursor c'est exactement la même chose

    Bon pour GET/SETappdata, je n'aurais peut-être pas du en parler tout de suite et atendre ta prochaine question...

    Dans ta UpdataFcn, je suppose que tu vas avoir besoin d'accéder aux données dont tu parles dans ton 1er post : où sont stockées ces données ?

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut
    Citation Envoyé par Caro-Line Voir le message
    Ma fonction n'est pas plus pratique que DataCursor c'est exactement la même chose
    Euh un peu près sauf que le truc par défaut, il faut beaucoup être plus précis, et je dois retirer l'un pour en afficher un autre alors que là, pas besoin : l'utilisation est simplifié (oui sinon c'est la même chose effectivement)


    Citation Envoyé par Caro-Line Voir le message
    Dans ta UpdataFcn, je suppose que tu vas avoir besoin d'accéder aux données dont tu parles dans ton 1er post : où sont stockées ces données ?
    En faite mon fichier .txt est de la forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    n°ligne / nom_fichier / type_signal / data1 / data 2 
    1  094578_45758598.pro bruit  45.25 74.78
    2  094457_45879545.pro signal  45.25 74.78
    3  097898_78854515.pro signal  45.25 74.78
    4  090578_78451242.pro parasite  45.25 74.78
    [...]
    je plot mon nuage de point en fonction des datas, je fais des groupe (type_signal) en utilisant SCATTER et j'aimerais retourner SOIT le n°ligne (ce qui reviendrait à la variable cursor_info.DataIndex) ou MIEUX retourner le nom_fichier

    Donc mes données sont stockés dans des vecteurs

  14. #14
    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 828
    Points
    14 828
    Par défaut
    Donc pour le n° de ligne tu peux te débrouiller tout seul normalement

    Pour le nom du fichier il faudrait donc que dans la fonction où tu lis ton fichier tu "enregistres" cette variable.
    Une des possibilités est d'utiliser SETAPPDATA.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    nom_fichiers={'fich1','fich2'};
    setappdata(gcf,'nom_fich',nom_fichiers);
    Puis dans la UpdatFcn tu récupères avec GETAPPDATA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nom_fichiers=getappdata(gcf,'nom_fich');

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut
    Bonjour,

    Finalement autant sur le petit exemple cursor.info marchait, autant avec mon programme, il me retourne toujours 1. Bon et puis comme le mieux est l'ami du bien, j'essaye :

    Ci-dessous, programme en entier (important en GRAS) :

    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
    clear all
    close all
    cd('D:\Travail\TRAITEMENT_BF\etude_bf');
    [X{1:12}] = textread('Valeurs_bf_etude_2.txt','%d%s%s%f%f%f%f%f%f%f%f%f','headerlines',1);
    
    num_image = X{1}();
    directory = X{2}();
    type_v1 = X{3}();
    rms_v1 = X{4}();
    disp_v1 = X{5}();
    std_v1 = X{6}();
    dep_v1 = X{6}();
    dep_spect_v1 = X{7}();
    integ_spect_v1 = X{8}();
    moyen_spect_v1 = X{9}();
    ratio_moy = X{10}();
    pourcent_baisse_moy = X{11}();
    pourcent_baisse_20 = X{12}();
    
    % Groupe tous les paramètres dans une matrice data
    data = [rms_v1, disp_v1, dep_v1, dep_spect_v1, integ_spect_v1, moyen_spect_v1,...
        ratio_moy, pourcent_baisse_moy, pourcent_baisse_20 ];
    
    % Vecteur correspondant aux noms des paramètres
    name_data = {'rms signal' 'disp signal' 'dep signal', 'dep spectrale' 'integrale spectrale' 'moyenne spectrale'...
        'ratio spectre' 'pourcent baisse spectrale (pas=moyenne)' 'pourcent baisse spectrale (pas=20)' };
    
    % Défini les nuages de points à ploter, ex: 1,2 : plot de RMS signal vs Disp signal.
    % ci-dessous : TOUS LES PLOTS
    % curves = [1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;2,3;2,4;2,5;2,6;2,7;2,8;2,9;3,4;3,5;3,6;3,7;3,8;3,9;4,5;4,6;4,7;...
    %     4,8;4,9;5,6;5,7;5,8;5,9;6,7;6,8;6,9;7,8;7,9;8,9] ;
    
    % ci-dessous : PLOT A DEFINIR
    curves =[1,2]
    
    [type_ordr_alphab,a,b] = unique(type_v1) ;
    
    % Boucle de traçage de tous les plots, aggandissement de l'image avec
    % maximize et enregistrement automatique en .bmp
    for i_curve = 1:size(curves,1)
        h = figure(i_curve) ;
        map = hsv(10);
        colormap(map) ;
        gscatter(data(:,curves(i_curve,1)), data(:,curves(i_curve,2)),type_v1,'ggggkrrmmrrbyyk','.x*++.x.xds..s.');
        xlabel(name_data(curves(i_curve,1)),'Interpreter','none') ;
        ylabel(name_data(curves(i_curve,2)),'Interpreter','none') ;
    
        dcm=datacursormode(gcf);
        set(dcm,'UpdateFcn',@updatefcn_data);
        datacursormode on
        
        setappdata(gcf,'nom_fich',directory);
        
        n1 = name_data(curves(i_curve,1)) ;
        n2 = name_data(curves(i_curve,2)) ;
        titre = ([n1{:,:}() ' vs ' n2{:,:}()]) ;
        title(titre,'fontsize',13) ;
        maximize(h);
        print (gcf, '-dbmp', titre)
        %saveas(gcf,titre,'fig')
        %saveas(gcf, titre, 'bmp');
        
    end
    et ci-dessous, la fonction updatefcn_data

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function output_text=updatefcn_data(obj,event_obj)
    pos = get(event_obj,'Position');
    directory=getappdata(gcf,'nom_fich');
    output_text = {['Time: ',num2str(pos(1))],...
        ['Amplitude: ',num2str(pos(2))],...
        ['Fichier: ',directory]};
    Mais il me retourne pas mal d'erreurs, il doit avoir un truc que j'ai pas saisi

    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
    Unbalanced or misused parentheses or brackets.
     
    Error in ==> graphics.datatip.datatip>localAxesUpdate at 882
      updatePositionAndString(hThis);
     
    ??? Error occurred while evaluating listener callback.
     
    ??? Error: File: D:\Travail\TRAITEMENT_BF\etude_bf\updatefcn_data.m Line: 6 Column: 26
    Unbalanced or misused parentheses or brackets.
     
    Error in ==> datacursormode>localWindowButtonDownFcnDatatip at 926
       update(hDatatip);
     
    Error in ==> datacursormode>localWindowButtonDownFcn at 788
         localWindowButtonDownFcnDatatip(fig,hTool,hTarget,doNewDatatip);
     
    ??? Error while evaluating figure WindowButtonDownFcn.
    Merci de votre aide

    PS : le nom des fichiers est en faite la directory entière et donc s'appelle directory

  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 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 951
    Points
    52 951
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    output_text = {['Time: ',num2str(pos(1))] ...
        ['Amplitude: ',num2str(pos(2))] ...
        ['Fichier: ',nom_fichier]};
    Ce qui s'écrit aussi de façon un peu plus lisible (à mon avis) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    output_text{1} = sprintf('Time: %f',pos(1));
    output_text{2} = sprintf('Amplitude: %f',pos(2));
    output_text{3} = sprintf('Fichier: %s',nom_fichier)
    Modifier le format %f si nécessaire

  17. #17
    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 828
    Points
    14 828
    Par défaut
    Il fallait l'adapter un peu mieux ta UpdateFcn, tu devrais essayer de la regarder à la loupe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function output_text=updatefcn_data(obj,event_obj)
    pos = get(event_obj,'Position');
    directory=getappdata(gcf,'nom_fich');
    output_text = {['Time: ',num2str(pos(1))],...
        ['Amplitude: ',num2str(pos(2))],...
        'Fichier: ',nom_fichier]};
    Comme 1ère erreur MATLAB te dit que tu as un nombre incohérent de parenthèses ou de crochets.
    Je t'ai mis en bleu celui qui se sent un peu seul
    Sinon tu récupères une variable directory mais tu utilises une variable nom_fichier non définie, c'est un peu bizarre, non ?
    Tu pourrais peut-être enlever les lignes de l'exemple qui ne servent à rien et qui embrouillent.

    Dans ton 1er fichier tu devrais faire le SETAPPDATA avant l'appel à DATACURSORMODE ce serait plus prudent (sinon il risque de ne pas avoir la donnée).

    Ensuite je croyais que tu voulais récupérer le DataIndex.
    Il faut bien à un moment choisir le nom du fichier que tu vas afficher.
    Que contient au juste ta variable directory ?
    Ne serait-ce pas une liste de fichiers sous forme de tableau de cellules ?

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut
    Premièrement je tiens à m'excuser de toutes les petites erreurs que vous souligner, j'ai passé dix minutes sur matlab sans les voir, j'écrit mon message et elles me sont apparues d'un coup (la magie de ce site surement). Donc j'ai fait 3 edit pendant que vous me répondiez avec trop grande vitesse

    Ensuite je croyais que tu voulais récupérer le DataIndex.
    Il faut bien à un moment choisir le nom du fichier que tu vas afficher.
    Bah autant y'aller à fond maintenant.


    Que contient au juste ta variable directory ?
    Ne serait-ce pas une liste de fichiers sous forme de tableau de cellules ?
    Effectivement, j'ai un peu menti, la 2ème colonne nom du fichier est en faite une chaine de caractère de TOUTE la directory mais en l'ouvrant comme je l'ouvre en cell array, n'est ce pas correcte?


    EDIT : Alors en reprenant tous vos conseils :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    [...]
        gscatter(data(:,curves(i_curve,1)), data(:,curves(i_curve,2)),type_v1,'ggggkrrmmrrbyyk','.x*++.x.xds..s.');
        xlabel(name_data(curves(i_curve,1)),'Interpreter','none') ;
        ylabel(name_data(curves(i_curve,2)),'Interpreter','none') ;
        
        setappdata(gcf,'nom_fich',directory);
        
        dcm=datacursormode(gcf);
        set(dcm,'UpdateFcn',@updatefcn_data);
        datacursormode on
        
        n1 = name_data(curves(i_curve,1)) ;
        n2 = name_data(curves(i_curve,2)) ;
        titre = ([n1{:,:}() ' vs ' n2{:,:}()]) ;[...]
    et la fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function output_text=updatefcn_data(obj,event_obj)
    pos = get(event_obj,'Position');
    directory=getappdata(gcf,'nom_fich');
    output_text{1} = sprintf('Time: %f',pos(1));
    output_text{2} = sprintf('Amplitude: %f',pos(2));
    output_text{3} = sprintf('Fichier: %s',directory)
    il me retourne une erreur de plus (source de toutes les erreurs?)

    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
    ??? Error using ==> sprintf
    Function is not defined for 'cell' inputs.
    
    Error in ==> graphics.datatip.datatip>localAxesUpdate at 882
      updatePositionAndString(hThis);
    
    ??? Error occurred while evaluating listener callback.
    
    ??? Error using ==> sprintf
    Function is not defined for 'cell' inputs.
    
    Error in ==> datacursormode>localWindowButtonDownFcnDatatip at 926
       update(hDatatip);
    
    Error in ==> datacursormode>localWindowButtonDownFcn at 788
         localWindowButtonDownFcnDatatip(fig,hTool,hTarget,doNewDatatip);
    
    ??? Error while evaluating figure WindowButtonDownFcn.
    Donc, les fonctions n'aimeraient pas les cell? mis a part qu'elles sont difficiles , elles aiment quoi?

  19. #19
    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 828
    Points
    14 828
    Par défaut
    Oui directory est un tableau de cellules.
    Normalement si j'ai bien compris il devrait contenir la liste de tous les fichiers.
    Toi tu veux afficher celui qui correspond au point sélectionné.
    C'est pour cela que je te dis que tu as besoin de la valeur du DataIndex qui va te donner l'indice du fichier dans directory.
    (Tu as vraiment besoin de garder les lignes Time & Amplitude qui ne correspondent pas à ton besoin ?)

    Pour être sure que je ne me trompe pas peux-tu nous montrer ce que contient la variable directory (ce qui s'affiche dans MATLAB pas ce que toi tu penses qu'elle contient)

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut
    voilà :

    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
    directory = 
     
        'Y:\copy\Etude_BF\typologie_bf\090211_03414938.pro'
        'Y:\copy\Etude_BF\typologie_bf\090211_14001313.pro'
        'Y:\copy\Etude_BF\typologie_bf\090211_03341275.pro'
        'Y:\copy\Etude_BF\typologie_bf\090212_01152460.pro'
        'Y:\copy\Etude_BF\typologie_bf\090208_09561627.pro'
        'Y:\copy\Etude_BF\typologie_bf\090211_04440433.pro'
        'Y:\copy\Etude_BF\typologie_bf\090211_00000038.pro'
        'Y:\copy\Etude_BF\typologie_bf\090211_12594847.pro'
        'Y:\copy\Etude_BF\typologie_bf\090211_16593711.pro'
        'Y:\copy\Etude_BF\typologie_bf\090211_10303614.pro'
        'Y:\copy\Etude_BF\typologie_bf\090211_10251883.pro'
        'Y:\copy\Etude_BF\typologie_bf\090211_05514230.pro'
        'Y:\copy\Etude_BF\typologie_bf\090212_09262323.pro'
        'Y:\copy\Etude_BF\typologie_bf\090211_18243540.pro'
    Citation Envoyé par Caro-Line Voir le message
    C'est pour cela que je te dis que tu as besoin de la valeur du DataIndex qui va te donner l'indice du fichier dans directory.
    Euh ha y'en a besoin? alors je vois pas comment le récupérer. Parce que ma méthode consistait à récup cursor_info.DataIndex après coup, sur la figure. Tu m'as dit qu'elle était contenu dans event_obj (dans la fonction) mais je n'ai pas réussi à la trouver..

    Citation Envoyé par Caro-Line Voir le message
    (Tu as vraiment besoin de garder les lignes Time & Amplitude qui ne correspondent pas à ton besoin ?)
    Euh non je l'enlèverai, surtout que c'est ni Time, ni Amplitude et qu'en plus ma commande trace 36 graphiques de paramètres pris 2 à 2 donc c'est jamais la même chose.


    Merci

Discussions similaires

  1. [WD-2003] Lire les coordonnées du pointeur souris sur la page
    Par nicolas_8104 dans le forum VBA Word
    Réponses: 4
    Dernier message: 05/07/2011, 09h38
  2. Mettre le pointeur de la souri sur un controle ?
    Par SSJconsult dans le forum VBA Access
    Réponses: 1
    Dernier message: 05/12/2008, 14h14
  3. Réponses: 5
    Dernier message: 29/05/2008, 11h13
  4. Forme du pointeur de souris sur une cellule de tableau
    Par Delphi-ne dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 30/05/2007, 11h15
  5. Cacher le pointeur souris (sur tout le systeme)
    Par Platypus dans le forum MFC
    Réponses: 4
    Dernier message: 20/02/2006, 17h40

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