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 :

texte sous un graphe [Débutant]


Sujet :

MATLAB

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 66
    Points : 43
    Points
    43
    Par défaut texte sous un graphe
    Bonjour,

    je crée des boites à moustaches avec la fonction boxplot et en utilisant subplot sur lesquels j'ajoute les noms des axes.

    J'ajoute des informations supplementaires sur les valeurs de moyenne, variance et Stdev en dessous de chaque boxplot.

    Cependant, j'aimerai que ces informations aparraissent à une distance constante en dessous du titre des abscisses et non en fonction des l'axes des ordonnées comme cela est actuellement.

    Voilà le cose que j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    %Formatage
    cellFinal = [cellfun(@num2str,num2cell(stat1),'UniformOutput',false)]; % cellFinal est la matrice avec les resultat moyenne, variance et Stdev dedans
    yTicks = get(gca,'ytick');
    xTicks = get(gca, 'xtick');
    N=axis;
    minY =N(3);
     
    verticalOffset = 10;
    text(0.5, minY - verticalOffset, ligne, 'HorizontalAlignment','Right');
    for xx = 1:length(xTicks)
    text(xTicks(xx), minY - verticalOffset, cellFinal (:, xx),'HorizontalAlignment','Center'); 
    end
    JE pense que le mieux serait d'obtenir la distance en pixel . Une idée?

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Bonjour,

    As-tu essayer de définir la propriété XTickLabel de ton axe?

    Duf
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    Je n'ai pas très bien compris la question.
    Voici le code en amont:

    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
     
    %Boxplot des périmètres
    X = [];
    G = [];
    for i = 1:length(tab)
        c = tab{i}(:,cPerimeter);
        X = [X ; c];
        G = [G ; i*ones(size(c,1),1)]; 
    end
    subplot (3,2,1) 
    boxplot(X, G, 'sym', ' ') %j'ai enlevé les outlier avec sym = rien
    title(a{1}(cPerimeter ,1)); xlabel('Conditions'); ylabel([a{1}{cPerimeter ,1} '(\mum)']);
    set(gca,'XTick',1:numel(cMesLabels)); 
    set(gca,'XTickLabel',cMesLabels);
     
    %Mise en place de la matrice statistique
    stat1 = [];
    for i = 1:length(tabstat)
        stat1 = [stat1, tabstat{i}(:,cPerimeter)];
    end
     
    %Avec les titres de lignes
    ligne={'Mean';'Var';'Std'};
     
    %Formatage
    cellFinal = [cellfun(@num2str,num2cell(stat1),'UniformOutput',false)];
    %cellFinal = [{' '},colonne; ligne,cellfun(@num2str,num2cell(stat1),'UniformOutput',false)];
    yTicks = get(gca,'ytick');
    xTicks = get(gca, 'xtick');
    N=axis;
    minY =N(3);
     
    verticalOffset = 10;
    text(0.5, minY - verticalOffset, ligne, 'HorizontalAlignment','Right');
    for xx = 1:length(xTicks)
        text(xTicks(xx), minY - verticalOffset, cellFinal (:, xx),'HorizontalAlignment','Center'); 
    end
    merci pour votre aide

  4. #4
    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,

    tu aurais juste un exemple de valeurs pour X et G, histoire de se faire une idée de ton code ;-)

    J'avoue, j'ai un peu la flemme de chercher à générer des données aléatoires

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    Voici un cours exemple de X et G:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    X = [484,2398;853,2866;769,5615;824,2636;806,3643];
    G=[1,2;1,2;1,2;1,2;1,2]
    merci de votre aide

  6. #6
    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
    Bon, j'ai regardé vite fait et sincèrement, je ne sais pas si c'est le meilleur moyen de représenter les choses.

    Ta variable ligne qui affiche le mean, var et std sera centrée verticalement sur la valeur que tu définis par (minY - verticalOffset), peut importe que cette valeur soit présente ou non dans ton graphe.

    En fait, tous tes subplots vont être générés avec des ylim différents (enfin je suppose puisque tu ne forces pas ces valeurs). Du coup pour chaque subplot, tu vas avoir ta valeur de référence (minY - verticalOffset) qui va se balader verticalement.

    A partir de là, je vois deux solutions:

    soit contraindre tous tes subplot par un ylim genre ylim([100 3000]) et définir une fois pour toute ta valeur de référence genre text(xticks(xx,-1000,.....) et non pas (minY - verticalOffset).

    Mais je ne pense pas que le résultat soit très sympa si tu as plusieurs subplot à afficher sur plusieurs lignes....

    Deuxième solution, directement inclure tes valeurs std, Var et Mean à l'intérieur de ton graphique. Pourquoi pas carrément à l'intérieur de ta boxplot?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    Oui c'est exactement cela, mais si je les ajoute dnas la boxplot, cela ne va pas faire super propre, je le crains, je vais essayer.

  8. #8
    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
    L'ennui quand tu veux mettre ce genre d'information dans un graphe, c'est que ca peut vite devenir illisible. Surtout si tu as beaucoup de graphe.

    Tu peux essayé de passer ces paramètres en xticks. Ca peut être un compromis.

    Tu peux également tout mettre dans une légende.

    Perso, j'ajouterai à la fin de mes subplot une autre figure avec le tracé de ces différents paramètres. Tu les auras tous sur un même graph et ca sera (je pense, tout dépend de tes données et de leur nombre...) plus lisible

  9. #9
    Membre à l'essai
    Homme Profil pro
    doctorant
    Inscrit en
    Décembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2012
    Messages : 25
    Points : 24
    Points
    24
    Par défaut
    bonjour
    j'ai la meme probleme et j'utilise la fonction text comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    text(125,Z01(13,P,N),sprintf('R= %f' , R(P)))

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

Discussions similaires

  1. Editeur de texte sous Web
    Par geant2m dans le forum Langage
    Réponses: 1
    Dernier message: 16/09/2005, 16h30
  2. Comment trouver le texte sous le curseur ?
    Par deetox dans le forum Langage
    Réponses: 2
    Dernier message: 06/08/2005, 13h54
  3. [SNMP] Outils snmp sous linux (graphes, rapports...)
    Par doudine dans le forum Développement
    Réponses: 2
    Dernier message: 12/04/2005, 09h08
  4. [MFC] texte sous le pointeur souris
    Par Vestaproman dans le forum MFC
    Réponses: 14
    Dernier message: 09/09/2004, 20h25
  5. texte sous direct3d
    Par conrad dans le forum DirectX
    Réponses: 26
    Dernier message: 02/06/2004, 18h03

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