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] Mettre des entêtes


Sujet :

MATLAB

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 219
    Points : 97
    Points
    97
    Par défaut [subplot] Mettre des entêtes
    Bonjour,
    J'ai une image comportant 64 subplots (8 lignes et 8 colonnes). Mes lignes et colonnes représentent les mêmes 8 variables.
    Je voudrais mettre au-dessus de chacune de mes colonnes et à côté de chacune de mes lignes, le nom de la variable correspondante, pour plus de lisibilité. Ce qui donnerait quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
             var1        var2        var3 ...
    var1  subplot1  subplot2  subplot3
    var2  subplot9  subplot10  subplot11
    J'ai cherché mais je n'ai trouvé aucune solution. Est-ce possible?

    Je joins mon image (sans les noms de variables...)

    Merci d'avance
    Images attachées Images attachées  

  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 318
    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 318
    Points : 52 958
    Points
    52 958
    Par défaut
    Il suffit de renseigner les propriétés YLabel et Title de chacun des objets Axes crées par SUBPLOT.

    On peut aussi renseigner les propriétés YLabel et XLabel de ces mêmes objets, et mettre leur propriété XAxisLocation à Top.

  3. #3
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    Tu dois utiliser la fonction bas-niveau text(...)

    Pas trop compliqué et bien documenté.
    Attention : les coordonnées (x,y) du texte que tu va écrire sont normalisées (de 0 à 1 sur tout le graphique).

    Si tu veux écrire ce texte en assez petit, tu n'as probablement rien à changer. par contre si tu dois l'écrire en gros, tu va alors devoir faire de la place en haut et à gauche pour écrire ce texte. Cet espace sera dégagé par une appel bas-niveau de la fonction subplot dans laquelle tu va calculer toi-même la place et la taille de chaque sub-plot de manière à ce qu'ils ne remplissent pas tout l'espace.

  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 318
    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 318
    Points : 52 958
    Points
    52 958
    Par défaut
    Citation Envoyé par ol9245 Voir le message
    Attention : les coordonnées (x,y) du texte que tu va écrire sont normalisées (de 0 à 1 sur tout le graphique).
    , si je ne trompe pas, lorsque la propriété Units d'un objet Text n'est pas renseignée, elle prends la valeur Data qui signifie qu'elle se réfère à la propriété Units de l'objet Axes parent.

    Bon, comme l'unité par défaut des objets Axes est normalized, ça rejoint souvent ce que tu dis... mais pas tout le temps

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 219
    Points : 97
    Points
    97
    Par défaut
    Merci pour vos réponses.
    J'ai essayé un bidoullant les propriétés des axes. Pour le moment, je n'ai pas tout à fait ce que je veux (mes variables sont écrites sur toutes les lignes et toutes les colonnes) avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     figure('Name','Corrélations entre les variables 2 à 2 ','Position',[scrsz(4)/16 scrsz(4)/16 scrsz(3)/1.2 scrsz(4)/1.2]);
    ax1=gca;
    for i=1:8
        for j=1:8
            subplot(8,8,k);
            hold on
            plot(matrix_good(:,i),matrix_good(:,j),'x');
            xlabel(sprintf(M{j}))
            ylabel(sprintf(M{i}))
            %title(M{j})
            k=k+1;
        end
    end
    axes('Position',get(ax1,'Position'), 'XAxisLocation','top','YAxisLocation','left')
    Pour la fonction text, ça a l'air assez pénible à mettre en place et vu que ma "mise en page" n'est pas imposée, je vais peut-être me contenter de ce que j'ai obtenu là, à moins que quelqu'un voit comment je puisse remédier à mon problème de manière assez simple.
    Images attachées Images attachées  

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 318
    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 318
    Points : 52 958
    Points
    52 958
    Par défaut
    C'est normal... j'ai encore répondu à coté de la plaque

    Seules les propriétés des objets Axes placés sur les bords gauche et supérieur doivent être modifiées

  7. #7
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 318
    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 318
    Points : 52 958
    Points
    52 958
    Par défaut
    Un exemple rapide :

    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
    figure
    k = 1;
    for i=1:8
        for j=1:8
            s(k) = subplot(8,8,k);
            hold on
            plot(rand(5,1),rand(5,1));
            k=k+1;
        end
    end
     
    T = {'A' 'B' 'C' 'D' 'E' 'F' 'G' 'H'};
     
    for n=1:8
        axes(s(n))
        title(T{n})
    end
     
    Y = {'1' '2' '3' '4' '5' '6' '7' '8'};
    k = 1;
    for n=1:8:64
        axes(s(n))
        ylabel(Y{k});
        k = k+1;
    end

  8. #8
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    Dut, tu as raison, j'ai dit une connerie. Il faut passer par annotation.
    Voici un pg de démo (qui marche )
    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
    data = reshape(randperm(80),10,8) ;
    figure (1)
    clf
    hold off
    k=1 ;
    for i=1:8
        for j =1:8
            subplot(8,8,k)
            plot (data(:,i), data(:,j), '.')
            k=k+1 ;
        end
    end
     
    xmargin = 0.1
    ymargin = 0.05 ;
    for i=1:8
        x = xmargin + ((i-1)/8)*(1-2*xmargin) ;
        y = 0.95 ;
        w = 1/8 *(1-2*xmargin) ;
        h = 0.05 ;
        t = annotation('textbox',[x y w h]) ;
        box off
        set (t, 'LineStyle', 'none', 'string', num2str(i), 'fontsize', 12, 'horizontalalignment', 'center', 'verticalalignment', 'middle')
    end
     
    for i=1:8
        x = 0 ;
        y = ymargin + ((i-1)/8)*(1-2*ymargin) ;
        h = 1/8 *(1-2*ymargin) ;
        w = 0.05 ;
        t = annotation('textbox',[x y w h]) ;
        box off
        set (t, 'LineStyle', 'none', 'string', num2str(i), 'fontsize', 12, 'horizontalalignment', 'center', 'verticalalignment', 'middle')
    end

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 219
    Points : 97
    Points
    97
    Par défaut
    Les deux solutions marchent très bien
    Merci à vous deux !

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

Discussions similaires

  1. [Vxi3] Mettre en entête des valeurs d'une colonne
    Par BoCcool dans le forum Webi
    Réponses: 1
    Dernier message: 21/12/2012, 16h42
  2. Réponses: 6
    Dernier message: 11/01/2008, 13h06
  3. [FPDF] Mettre des données issues d'une requête dans l'entête
    Par zoom61 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 30/03/2007, 11h10
  4. [Syntaxe] mettre des ' dans une string ?
    Par souch dans le forum Débuter
    Réponses: 4
    Dernier message: 14/08/2003, 17h26
  5. Réponses: 4
    Dernier message: 24/04/2003, 23h28

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