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

Interfaces Graphiques Discussion :

Modification de courbes


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Mars 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2016
    Messages : 8
    Par défaut Modification de courbes
    Bonjour à tous,

    Je cherche à pouvoir modifier une courbes tracée sous Matlab. J'aimerai pouvoir, modifier les coordonnées (X,Y) d'un point de ma courbes à l'aide d'un drag & drop.
    J'entends par là pouvoir cliquer sur mon point de courbe, rester cliqué dessus et modifier sa position sur ma courbe.
    Pensez-vous qu'un tel outils soit disponible sous Matlab ? ou bien l'un d'entre vous aurait développé un tel outils ?

    J'ai trouvé ce bout de code sur le forum :

    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
    function exemple
    x = 1:10;
    y = rand(1,10);
    handlePlot = plot(x, y, 'r-o',...
        'ButtonDownFcn', @buttonDownFcn); % Exécution de buttonDownFcn() à chaque clic sur la courbe
    title('Cliquez-déplacez les points de la courbe')
    idx = [];
     
        function buttonDownFcn(~, ~)
            pos = get(gca, 'CurrentPoint');                           % Position de la souris
            [~,idx] = min( abs(pos(1,1)-x)+abs(pos(1,2)-y) );         % Indice du point le plus proche de la souris
            set(gcf, 'WindowButtonMotionFcn', @windowButtonMotionFcn) % On suit les mouvements de la souris
            set(gcf, 'WindowButtonUpFcn', @windowButtonUpFcn)         % On repère lorsque l'utlisateur relache le bouton
        end
        function windowButtonMotionFcn(~, ~)
            pos = get(gca, 'CurrentPoint');         % Position de la souris
            x(idx) = pos(1,1);                      % Mise à jour de l'abscisse du point
            y(idx) = pos(1,2);                      % Mise à jour de l'ordonnée du point
            set(handlePlot, 'XData', x, 'YData', y) % Mise à jour du tracé
        end
        function windowButtonUpFcn(~, ~)
                                                  % Le bouton a été relâché... 
            set(gcf, 'WindowButtonMotionFcn', '') % On ne suit plus les mouvements de la souris
            set(gcf, 'WindowButtonUpFcn', '')     % Ni le relâchement du bouton
        end
    end
    Qui est en soit très satisfaisant, mais j'aimerai, en plus, pouvoir récupérer mes vecteurs X et Y ainsi modifiés.

    Si non, connaîtriez vous un logiciel permettant de faire ce type de manœuvre et d'exporter le fichier source ainsi modifié ?

    Bien cordialement,
    Merci d'avance,
    Jérémie.

  2. #2
    Membre émérite
    Avatar de soft001
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2008
    Messages
    409
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 409
    Par défaut
    J'ai modifié ton code Ligne 27-30
    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
     
    function exemple
    x = 1:10;
    y = rand(1,10);
    handlePlot = plot(x, y, 'r-o',...
        'ButtonDownFcn', @buttonDownFcn); % Exécution de buttonDownFcn() à chaque clic sur la courbe
    title('Cliquez-déplacez les points de la courbe')
    idx = [];
     
        function buttonDownFcn(~, ~)
            pos = get(gca, 'CurrentPoint');                           % Position de la souris
            [~,idx] = min( abs(pos(1,1)-x)+abs(pos(1,2)-y) );         % Indice du point le plus proche de la souris
            set(gcf, 'WindowButtonMotionFcn', @windowButtonMotionFcn) % On suit les mouvements de la souris
            set(gcf, 'WindowButtonUpFcn', @windowButtonUpFcn)         % On repère lorsque l'utlisateur relache le bouton
        end
        function windowButtonMotionFcn(~, ~)
            pos = get(gca, 'CurrentPoint');         % Position de la souris
            x(idx) = pos(1,1);                      % Mise à jour de l'abscisse du point
            y(idx) = pos(1,2);                      % Mise à jour de l'ordonnée du point
            set(handlePlot, 'XData', x, 'YData', y) % Mise à jour du tracé
        end
        function windowButtonUpFcn(~, ~)
                                                  % Le bouton a été relâché... 
            set(gcf, 'WindowButtonMotionFcn', '') % On ne suit plus les mouvements de la souris
            set(gcf, 'WindowButtonUpFcn', '')     % Ni le relâchement du bouton
            LinePlot = get(gca,'Children');
            NewX = LinePlot.XData';
            NewY = LinePlot.YData';
            XYData = [NewX NewY];
            save('NewXY.txt','XYData','-ASCII')
        end
    end

Discussions similaires

  1. Interaction figure et modification de courbe
    Par framelet dans le forum MATLAB
    Réponses: 1
    Dernier message: 12/09/2014, 19h01
  2. Modification couleur courbe
    Par Masie dans le forum Webi
    Réponses: 2
    Dernier message: 22/06/2010, 16h16
  3. [XL-2007] Modif.couleur d'une courbe de tendance
    Par shemonet dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/02/2010, 07h53
  4. Réponses: 1
    Dernier message: 02/11/2006, 09h25
  5. Réponses: 5
    Dernier message: 05/05/2006, 14h48

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