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 :

Subplot link axes


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Subplot link axes
    Bonjour à tous,
    Je cherche un moyen de lier les axes 2 à 2 dans une figure comprenant plusieurs subplot.
    Concrètement, dans le petit exemple ci-dessous, je voudrai réaliser les liaisons suivantes:
    Lier l'axe y des subplot h(1) et h(2)
    Lier l'axe x des subplot h(1) et h(3)
    Lier l'axe y des subplot h(3) et h(4)
    Lier l'axe x des subplot h(2) et h(4)



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    x1=linspace(0,10,100);
    x2=linspace(-5,5,100);
    y1=x1.^2+x2.^2;
    y2=cos(x1)+sin(x2);
     
    figure
    for i=1:4
        h(i)=subplot(2,2,i);
    end
     
    scatter(h(1),x1,y1);
    scatter(h(2),x2,y1);
    scatter(h(3),x1,y2);
    scatter(h(4),x2,y2);

    Merci d'avance pour votre aide.

  2. #2
    Invité
    Invité(e)

  3. #3
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Bonjour Winjerome,

    Si je rajoute les 2 lignes suivantes, je synchronise bien les axes x

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    linkaxes([h(1) h(3)],'x')
    linkaxes([h(2) h(4)],'x')
    par contre si je veux synchroniser les axes 2 à 2, la même méthode ne fonctionne plus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    linkaxes([h(1) h(3)],'x')
    linkaxes([h(2) h(4)],'x')
    linkaxes([h(1) h(2)],'y')
    linkaxes([h(3) h(4)],'y')
    Les axes Y sont alors synchronisé, mais les axes X ne le sont plus.

  4. #4
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 882
    Points : 3 432
    Points
    3 432
    Par défaut
    salut

    linkaxes prend 3 options : 'x', 'y' et 'xy'
    cela pour synchroniser des axes en x, y ou les 2

    ce que tu souhaites faire c'est des synchronisations "croisées" :
    linkaxes ne le permet pas

    il faut alors faire la synchronisation à la main
    voir l'exemple 5 de la doc de zoom

    par exemple pour zoomer automatiquement en y l'axe 2 suite à un zoom sur l'axe 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    axes(hAxes(1));
    h = zoom;
    set(h, 'actionPostCallback', @(o,e) ylim(hAxes(2),'auto'));
    du coup, tu synchronises les x avec linkaxes
    et tu synchonises les y à la mano avec des callback et une fonction "maison"

Discussions similaires

  1. Reseter un axe comprenant des subplots
    Par Mikel44 dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 20/01/2011, 15h29
  2. Problème d'axes et subplot dans matlab
    Par nadou114 dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 18/05/2010, 20h21
  3. [ginput/subplot] Récupérer l'axe courant
    Par poil dans le forum MATLAB
    Réponses: 2
    Dernier message: 14/01/2009, 11h35
  4. [subplot] Comment enregistrer un axe en particulier
    Par french_aspi dans le forum MATLAB
    Réponses: 1
    Dernier message: 06/08/2008, 19h13
  5. Réponses: 3
    Dernier message: 14/05/2008, 14h07

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