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

ODS et reporting Discussion :

Proc sgpanel : changer l'ordre de la légende sans changer l'ordre des groupes sur le graphique


Sujet :

ODS et reporting

  1. #1
    Candidat au Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Février 2014
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Proc sgpanel : changer l'ordre de la légende sans changer l'ordre des groupes sur le graphique
    Bonjour,

    Je souhaiterais changer l'ordre des variables de groupe au sein de la légende d'un graphique, réalisé à partir de la procédure sgpanel, sans changer l'ordre d'apparition des groupes sur le graphique.

    Le graphique que j'obtiens est le suivant :
    Nom : SGPanel65.png
Affichages : 1007
Taille : 5,8 Ko

    Je souhaiterais qu'au sein de la légende l'année 2005 apparaisse avant l'année 2012.

    J'utilise le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    proc sgpanel data=essai4;
    	panelby var/ layout=columnlattice onepanel noborder colheaderpos=bottom novarname;
    	hbar cat3 / response=tx group=annee stat=sum groupdisplay=cluster grouporder=descending nostatlabel;
    	colaxis display=(nolabel) VALUES=(0 to 1 by 0.1) ;
    	rowaxis display=(nolabel noline noticks);
    run;
    A partir de la base :
    annee cat3 var tx
    2005 A 1 35,85%
    2005 B 1 81,85%
    2005 C 1 0,00%
    2005 D 1 65,96%
    2005 E 1 66,06%
    2012 A 1 12,77%
    2012 B 1 65,03%
    2012 C 1 0,00%
    2012 D 1 50,00%
    2012 E 1 45,14%
    2005 A 2 32,08%
    2005 B 2 71,37%
    2005 C 2 0,00%
    2005 D 2 68,09%
    2005 E 2 64,68%
    2012 A 2 0,00%
    2012 B 2 16,56%
    2012 C 2 0,00%
    2012 D 2 27,50%
    2012 E 2 15,56%

    Merci d’avance pour votre aide.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 133
    Points : 371
    Points
    371
    Par défaut
    bonjour

    voici une solution qui a deux défauts... ça fait un peu bricolage (mais ça fait le job...) et ça ne fonctionnera qu'avec SAS 9.4 (puisque l'instruction STYLEATTRS n'est pas disponible pour les versions antérieures à SAS 9.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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    data essai4;
    input annee cat3 $ var tx :nlpct. ;
    tx2=tx/1000;
    cards;
    2005 A 1 35,85%
    2005 B 1 81,85%
    2005 C 1 0,00%
    2005 D 1 65,96%
    2005 E 1 66,06%
    2012 A 1 12,77%
    2012 B 1 65,03%
    2012 C 1 0,00%
    2012 D 1 50,00%
    2012 E 1 45,14%
    2005 A 2 32,08%
    2005 B 2 71,37%
    2005 C 2 0,00%
    2005 D 2 68,09%
    2005 E 2 64,68%
    2012 A 2 0,00%
    2012 B 2 16,56%
    2012 C 2 0,00%
    2012 D 2 27,50%
    2012 E 2 15,56%
    ;
     
    proc sgpanel data=essai4;
        styleattrs datacolors=(cx7C95CA cxDE7E6F cx7C95CA cxDE7E6F);
        panelby var/ layout=columnlattice onepanel noborder colheaderpos=bottom novarname;
        hbar cat3 / response=tx2 group=annee stat=sum groupdisplay=cluster grouporder=ascending nostatlabel ;
        hbar cat3 / response=tx group=annee stat=sum groupdisplay=cluster grouporder=descending nostatlabel ;
        colaxis display=(nolabel) VALUES=(0 to 1 by 0.1) ;
        rowaxis display=(nolabel noline noticks);
    run;
    pour une version antérieure à 9.4, il faut modifier le style ods utilisé de la manière suivante (bon.. ça reste quand même de l'ordre du bricolage...)

    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
     
    proc template ;
       define style lemien;
       parent=styles.listing;
       class GraphColors /
             'gdata3' = cx7C95CA
             'gdata4' = cxDE7E6F ;
       end;
    run;
     
    ods html style=lemien ;
     
    proc sgpanel data=essai4;
        panelby var/ layout=columnlattice onepanel noborder colheaderpos=bottom novarname;
        hbar cat3 / response=tx2 group=annee stat=sum groupdisplay=cluster grouporder=ascending nostatlabel ;
        hbar cat3 / response=tx group=annee stat=sum groupdisplay=cluster grouporder=descending nostatlabel ;
        colaxis display=(nolabel) VALUES=(0 to 1 by 0.1) ;
        rowaxis display=(nolabel noline noticks);
    run;
    et vous obtenez :


    et voilà !

    Cordialement

    Sébastien Ringuedé

  3. #3
    Candidat au Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Février 2014
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Merci pour cette solution, ça marche très bien.

    Cordialement

  4. #4
    Candidat au Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Février 2014
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Je me demandais également comment enlever toutes les bordures et rajouter les valeurs des taux à l'intérieur des histogrammes.

    J'ai essayé le code suivant pour enlever les bordures :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    proc template ;
      define style lemien;
    parent=styles.journal;
     class GraphColors /
     'gdata3' = grayc7
    'gdata4' = gray90 ;
    class graphwalls / 
    frameborder=off;
    class graphbackground / 
    color=white;
      end;
    run;
    Mais ça ne marche pas.

    Pour l'ajout des pourcentage, je connais l'option "inside=sum" mais ça ne marche que pour les histogrammes verticaux (vbar).

    Merci d'avance.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 133
    Points : 371
    Points
    371
    Par défaut
    Quelles sont les bordures que vous souhaitez enlever ?

    j'en enlève quelques unes dans ce programme (mais celle autour du cartouche [1 2]... je vous le laisse ;-))

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    data essai4;
    input annee cat3 $ var tx :nlpct. ;
    tx2=tx/1000;
    tx_fake=tx-0.15;
    if tx_fake<0 then tx_fake=0;
    if tx>0 then tx_label=tx;else tx_label=.;
    cards;
    2005 A 1 35,85%
    2005 B 1 81,85%
    2005 C 1 0,00%
    2005 D 1 65,96%
    2005 E 1 66,06%
    2012 A 1 12,77%
    2012 B 1 65,03%
    2012 C 1 0,00%
    2012 D 1 50,00%
    2012 E 1 45,14%
    2005 A 2 32,08%
    2005 B 2 71,37%
    2005 C 2 0,00%
    2005 D 2 68,09%
    2005 E 2 64,68%
    2012 A 2 0,00%
    2012 B 2 16,56%
    2012 C 2 0,00%
    2012 D 2 27,50%
    2012 E 2 15,56%
    ;
     
     
    proc template ;
       define style lemien;
       parent=styles.listing;
       class GraphColors /
             'gdata3' = cx7C95CA
             'gdata4' = cxDE7E6F 
             'gdata5' = cx7C95CA
             'gdata6' = cxDE7E6F ;
       end;
    run;
     
    ods html style=lemien ;
    ods graphics / noborder ;
    proc sgpanel data=essai4;
        panelby var/ layout=columnlattice onepanel noborder colheaderpos=bottom novarname;
        hbar cat3 / response=tx2 group=annee stat=sum groupdisplay=cluster grouporder=ascending nostatlabel ;
        hbar cat3 / response=tx group=annee stat=sum groupdisplay=cluster grouporder=descending nostatlabel nooutline name='a' ;
        hbar cat3 / response=tx_fake group=annee stat=sum groupdisplay=cluster grouporder=descending nostatlabel nooutline name='a' datalabel=tx_label;
    	refline 0 / axis=x;
        colaxis display=(nolabel) VALUES=(0 to 1 by 0.1) ;
        rowaxis display=(nolabel noline noticks);
    	keylegend 'a' / noborder ;
    run;
    encore du bricolage...

    Cordialement

    Sébastien Ringuedé

  6. #6
    Candidat au Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Février 2014
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Merci pour votre réponse.

    Les bordures que je souhaite enlever sont celles au dessus du graphique et sur le côté droit du graphique. (effectivement mon message n'était pas très précis, je compte bien sûr enlever les bordures autour de [1 2] et de la légende toute seule ;-) ).

    Cordialement et merci encore,

    Emeline

Discussions similaires

  1. [VxiR2] Changer l'ordre dans une légende
    Par JuniorBI dans le forum Deski
    Réponses: 0
    Dernier message: 24/04/2012, 14h49
  2. customiser la proc SGpanel
    Par nostress dans le forum ODS et reporting
    Réponses: 4
    Dernier message: 13/04/2011, 13h37
  3. Réponses: 0
    Dernier message: 03/06/2010, 17h09
  4. Changer l'ordre des groupes d'un rapport
    Par blured dans le forum Jasper
    Réponses: 1
    Dernier message: 05/04/2009, 19h12
  5. Réponses: 3
    Dernier message: 06/02/2009, 09h00

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