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 :

font size xlabel contenu dans une cellule


Sujet :

MATLAB

  1. #1
    Membre chevronné
    Homme Profil pro
    Éternel universitaire
    Inscrit en
    Avril 2012
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Éternel universitaire

    Informations forums :
    Inscription : Avril 2012
    Messages : 421
    Par défaut font size xlabel contenu dans une cellule
    Bonjour à vous,

    J'essaye de modifier la taille de police de mon xlabel. Jusque là tout va bien, là où ça se gate, c'est que mon xlabel est contenu dans une cellule et que le xlabel ne peut pas être modifié de façon traditionnelle on dirait. Mon code qui marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    set(gca,'XTick', 1:length(bvnames),'XTickLabel', bvnames)
            xlhand = get(gca,'xlabel');
            set(xlhand,'FontSize',2);
            rotateticklabel(gca,45);
    avec bvnames une cellule qui contient des chaînes de caractères et rotaticklabel une fonction trouvée ici pour la rotation (on s'en doutait dis donc ! ). La taille 2 de police est aberrante mais c'est juste pour ne pas passer à côté de changement si changement il y a.

    Merci beaucoup !

  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 317
    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 317
    Par défaut
    Tu parles bien de la propriété XLabel qui permet de mettre un titre à l'axe des abscisses et qui est différente de la propriété XTickLabel qui permet elle de mettre des étiquettes aux graduation de l'axe des abscisse ?

  3. #3
    Membre chevronné
    Homme Profil pro
    Éternel universitaire
    Inscrit en
    Avril 2012
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Éternel universitaire

    Informations forums :
    Inscription : Avril 2012
    Messages : 421
    Par défaut
    Réponse un peu longue, vacances oblige

    Je viens de relire ce que j'ai posté, j'avais vraiment besoin de vacances... Effectivement, je me suis mêlé sévère entre les xticklabel et xlabel...

    J'essaye de modifier seulement la taille de la police de Xticklabel. Les xticklabel sont contenus dans une cellule. Code test pour décrire le problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    names(1)={'aaa'};
    names(2)={'bbb'};
    names(3)={'ccc'};
     
    figure(1)
    A=rand(3,1);
    plot(A);
    set(gca,'XTick', 1:length(names),'XTickLabel',names)
    set(get(gca,'XTickLabel'),'fontsize',50);
    J'obtiens un message d'erreur :
    Error using set
    Conversion to double from cell is not possible.
    
    Error in xticksnames (line 12)
    set(get(gca,'XTickLabel'),'fontsize',50);
    Ça fonctionne pas d'avantage avec un cell2mat(names) et même quand je commente la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set(gca,'XTick', 1:length(names),'XTickLabel',names)
    je n'arrive pas à changer seulement la taille des xticklabel...

    Qu'est ce qu'il ne tourne pas rond ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Le problème est que get(gca,'XTickLabel') renvoie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >> get(gca,'XTickLabel')
     
    ans = 
     
        'aaa'
        'bbb'
        'ccc'
    et non le handle de ces labels.

    Il n'y a malheureusement pas de solution simple applicable seulement sur l'axe des x.
    set(gca, 'FontSize', 50) va l'appliquer sur les y aussi.
    La "meilleure" solution sera d'utiliser un objet text à la place.

  5. #5
    Membre chevronné
    Homme Profil pro
    Éternel universitaire
    Inscrit en
    Avril 2012
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Éternel universitaire

    Informations forums :
    Inscription : Avril 2012
    Messages : 421
    Par défaut
    Merci de ta réponse Winjérôme. Je suis surpris qu'il n'y ait pas cette fonction sur matlab alors que ça me semble être quelque chose d'assez basique.

    Je me penche sur les objets textes...

    Merci !

  6. #6
    Invité
    Invité(e)
    Par défaut
    text sans 'e' à la fin : dont voici la documentation : text et Text Properties.
    Un autre lien.

  7. #7
    Membre chevronné
    Homme Profil pro
    Éternel universitaire
    Inscrit en
    Avril 2012
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Éternel universitaire

    Informations forums :
    Inscription : Avril 2012
    Messages : 421
    Par défaut
    Donc un code qui fait le boulot pour ceux que ça pourrait intéresser :

    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
    clear
    clc
     
    names(1)={'aaa'};
    names(2)={'bbb'};
    names(3)={'ccc'};
     
    figure(1)
    A=rand(3,1);
    plot(A);
    set(gca,'XTick', 1:length(names),'XTickLabel',[])
    for i=1:length(names)
        h=text(i,min(axis),names{i});
        set(h,'Rotation',70,'FontSize',40)
    end

  8. #8
    Invité
    Invité(e)
    Par défaut
    Reste la question de récupérer la valeur à laquelle l'axe x coupe l'axe des y pour mettre le texte à la bonne hauteur... Une idée ?
    Regarde la fonction ylim.

  9. #9
    Membre chevronné
    Homme Profil pro
    Éternel universitaire
    Inscrit en
    Avril 2012
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Éternel universitaire

    Informations forums :
    Inscription : Avril 2012
    Messages : 421
    Par défaut
    Citation Envoyé par Winjerome Voir le message
    Regarde la fonction ylim.
    Hehe, tu réponds trop vite, j'étais en train de modifier mon message !

    Effectivement, min(Ylim) bien mieux que min(axis), moins dangereux !

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

Discussions similaires

  1. [XL-2003] Variable = formule contenu dans une cellule
    Par Pa2pseudo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/05/2009, 22h29
  2. executer une commande clé contenue dans une cellule
    Par herji dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/09/2008, 18h12
  3. Récupérer le chemin contenu dans une cellule
    Par Geprocor dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/06/2008, 16h32
  4. Connaitre le nbre de caractère contenu dans une cellule Excel
    Par darkspoilt dans le forum VBA Access
    Réponses: 1
    Dernier message: 04/09/2007, 11h19
  5. Donner à une feuille la valeur contenue dans une cellule ?
    Par emilie_pons_2005 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/09/2006, 13h32

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