Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > ODS et reporting
ODS et reporting Forum d'entraide sur les fonctionnalités de reporting de SAS : gérer les sorties et graphiques de SAS
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/12/2011, 13h51   #1
Invité de passage
 
Inscription : octobre 2011
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 34
Points : 4
Points : 4
Par défaut Position des chiffres dans les histogrammes en sous groupe

Bonjour le monde,

j'ai fait quelques histogrammes avec des sous groupes ( subgroup dans proc gchart), et je voudrais afficher les valeurs suivant la règle suivante:

-mette la valeur en couleur blanche pour la premier sous groupe(et en noir pour le reste)
-mettre la valeur à l’intérieur du sous groupe sauf pour le dernier sous groupe(celui au sommet de la barre) je veux que la valeur s'affiche au dessus.


comment puis je gérer cela, et merci
kmel53 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 09h44   #2
Membre du Club
 
Inscription : novembre 2003
Messages : 142
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 142
Points : 58
Points : 58
Bonjour, voici une réponse partiellement finalisée :
Code :
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
goptions reset=ALL;
goptions ftext='arial' ctext=black htext=1;
proc summary DATA=sashelp.shoes nway;
   class Region Product;
   var Stores;
   output out=Temp (DROP=_type_ _freq_) sum=;
run;
DATA ANNOTAB;
   length text $ 32 FUNCTION color $ 8;
   retain FUNCTION 'label' when 'a' xsys ysys '2' size 1.5 ; * hsys '3' position '6';
   SET Temp;
   BY Region;
   midpoint=Region;
   SELECT (Product);
      when ("Boot")         do; color='white'; y=10; end;
      when ("Men's Casual") do; color='green'; y=100; end;
      when ("Men's Dress")  do; color='red';   y=200; end;
      otherwise             do; color='black'; y=300; end;
   end;
   text=put(Stores,3.0); xc=Region;
run;
proc gchart DATA=Temp annotate=Annotab;
   vbar Region / sumvar=Stores subgroup=Product maxis=axis1 raxis=axis2;
   pattern v=solid;
   axis1 label=none value=none;
   axis2 label=none;
run;quit;
L'idée est de créer une table d'annotation qui affiche les valeurs.
Dans le programme précédent, j'ai installé la hauteur en dur. Il faudra que tu travaille le code pour que la valeur de la variable Y soit fonction de la hauteur désirée.
enicnath est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 04/01/2012, 10h56   #3
Invité de passage
 
Inscription : octobre 2011
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 34
Points : 4
Points : 4
Merci énormément enicnath,

j'ai modifié ton programme comme tu me l'a proposé pour avoir un résultat presque satisfaisant, j'ai donc mis les Y en fonction de la hauteur partant du cumul comme ceci :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
DATA test;
	SET temp;
	BY region product;
 
	cumul+stores;
	IF first.region  then cumul=stores;
run;
 
DATA ANNOTAB;
   length text $ 32 FUNCTION color $ 8;
   retain FUNCTION 'label' when 'a' xsys ysys '2' size 1.5 ; * hsys '3' position '6';
   SET Test;
   BY Region;
   midpoint=Region;
   SELECT (Product);
      when ("Boot")         do; color='white'; y=cumul-2; end;
      when ("Men's Casual") do; color='green'; y=cumul-2; end;
      when ("Men's Dress")  do; color='red';   y=cumul-2; end;
      otherwise             do; color='black'; y=cumul-2; end;
   end;
   IF last.region then do; color='black'; y=cumul+12; end;
   text=put(Stores,3.0); xc=Region;
run;
Par contre il me reste un dernier problème: pour les catégories avec des valeurs très petites, je voudrais afficher le libellé à droite du sougroupe en question parce que sinon c'est trop petit et du coup les valeurs affichés sont superposées
kmel53 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2012, 10h18   #4
Membre du Club
 
Inscription : novembre 2003
Messages : 142
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 142
Points : 58
Points : 58
Tu peux modifier l'instruction Par celle-ci
Code :
IF Region='Asia' then text='       ' !! put(Stores,3.0); else text=put(Stores,3.0);
L'objectif est de mettre des espaces avant pour décaler le texte.
enicnath est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h32.


 
 
 
 
Partenaires

Hébergement Web