
FAQ SASConsultez toutes les FAQ
Nombre d'auteurs : 14, nombre de questions : 232, dernière mise à jour : 20 décembre 2012
Sommaire→ODS et Reporting→SAS GRAPH- Comment supprimer certaines valeurs de l'axe des abscisses dans un histogramme ?
- Comment définir les couleurs des barres d'un diagramme en barre ?
- Comment forcer l'ordre d'apparition des catégories dans un diagramme en barre ?
- Comment inclure plusieurs graphiques dans un seul et même graphique ?
- Comment paramétrer les titres d'un graphique contenant plusieurs sous-graphiques ?
- Comment paramétrer les boxplots : couleurs, statistiques, etc. ?
Avec les options 'tick' et 'color' vous pouvez contrôler entièrement l'apparence de l'affichage des valeurs de l'axe des abscisses.
DATA base;
do i=1 TO 100;
x=rannor(0);
output;
end;
run;
axis1 value=(color=white tick=1 color=black tick=3 color=red tick=5 color=black tick=7
color=red tick=9 color=black tick=11 color=red) ;
proc gchart DATA=base;
vbar x / maxis=axis1 midpoints=(-5 TO 5 BY 1) ;
run;En utilisant l'option DATTRMAP , disponible depuis la version SAS 9.3, vous pouvez paramétrer les couleurs de vos barres.
Ci-dessous un exemple de code SAS :
Title;
DATA essai1;
input ID $ value $ linecolor $ fillcolor $;
datalines;
myid F yellow yellow
myid M red red
;
run;
proc sgplot DATA=sashelp.class dattrmap=essai1 ;
vbar age / response=height GROUP=sex attrid=myid;
run;
DATA essai2;
input ID $ value $ linecolor $ fillcolor $;
datalines;
myid F pink pink
myid M blue blue
;
run;
proc sgplot DATA=sashelp.class dattrmap=essai2 ;
vbar age / response=height GROUP=sex attrid=myid;
run;À l'aide de l'option 'order', vous pouvez paramétrer cet ordre d'apparition.
Ci-dessous, un exemple de code SAS :
DATA work.sales ;
SET sashelp.prdsale ;
SELECT (country) ;
WHEN ("GERMANY") CatNum = 1 ;
WHEN ("CANADA") CatNum = 2 ;
OTHERWISE CatNum = 3 ;
END ;
RUN ;
PATTERN1 C=YELLOW ; /* Allemagne */
PATTERN2 C=RED ; /* Canada */
PATTERN3 C=BLUE ; /* Etats-Unis */
LEGEND1 VALUE=("Allemagne" "Canada" "Etats-Unis")
ORDER=(1 2 3)
LABEL = none
SHAPE=bar(1.3,0.7);
PROC GCHART DATA=work.sales ;
VBAR product / SUBGROUP=catNum SUMVAR=actual TYPE=SUM
LEGEND=legend1 ;
RUN ; QUIT ;À l'aide des procédures TEMPLATE et SGPLOT, vous pouvez créer un graphique contenant plusieurs sous-graphiques.
Le code ci-dessous est un exemple de code SAS vous permettant de créer un graphique contenant quatre sous-graphiques.
proc template;
define statgraph sgdesign;
dynamic _SEX _HEIGHT _AGE _WEIGHT _NAME _WEIGHT2 _SEX2 _HEIGHT2;
begingraph;
layout lattice / rowdatarange=DATA columndatarange=DATA rows=2 COLUMNS=2 rowgutter=10 columngutter=10 rowweights=(0.5 0.5);
layout overlay;
boxplot x=_SEX y=_HEIGHT / name='box' boxwidth=0.4 discreteoffset=0.0 clusterwidth=1.0;
endlayout;
layout overlay;
boxplot x=_AGE y=_WEIGHT / name='box2' boxwidth=0.4 groupdisplay=Cluster clusterwidth=1.0;
endlayout;
layout overlay;
boxplot x=_NAME y=_WEIGHT2 / name='box3' boxwidth=0.4 groupdisplay=Cluster clusterwidth=1.0;
endlayout;
layout overlay;
boxplot x=_SEX2 y=_HEIGHT2 / name='box4' boxwidth=0.4 groupdisplay=Cluster clusterwidth=1.0;
endlayout;
endlayout;
endgraph;
end;
run;
proc sgrender DATA=SASHELP.CLASS template=sgdesign;
dynamic _SEX="SEX" _HEIGHT="HEIGHT" _AGE="AGE" _WEIGHT="WEIGHT" _NAME="NAME" _WEIGHT2="WEIGHT" _SEX2="SEX" _HEIGHT2="HEIGHT";
run;
À l'aide des options 'entrytitle', 'entryfootnote' et 'entry' de la procédure TEMPLATE vous pouvez gérer les titres des graphiques.
Le code ci-dessous est un exemple vous permettant de réaliser cette manipulation.
proc template;
define statgraph sgdesign;
dynamic _SEX _HEIGHT _AGE _WEIGHT _NAME _WEIGHT2 _SEX2 _HEIGHT2;
begingraph;
entrytitle halign=center 'Saisissez votre titre...';
entryfootnote halign=LEFT 'Saisissez votre note de bas de page...';
layout lattice / rowdatarange=DATA columndatarange=DATA rows=2 COLUMNS=2 rowgutter=10 columngutter=10 rowweights=(0.5 0.5);
layout overlay;
boxplot x=_SEX y=_HEIGHT / name='box' boxwidth=0.4 discreteoffset=0.0 clusterwidth=1.0;
entry halign=center 'Titre 1' / valign=top location=outside textattrs=(style=italic weight=normal );
endlayout;
layout overlay;
boxplot x=_AGE y=_WEIGHT / name='box2' boxwidth=0.4 groupdisplay=Cluster clusterwidth=1.0;
entry halign=center 'Titre 2' / valign=top location=outside textattrs=(style=normal weight=bold );
endlayout;
layout overlay;
boxplot x=_NAME y=_WEIGHT2 / name='box3' boxwidth=0.4 groupdisplay=Cluster clusterwidth=1.0;
entry halign=center 'Titre 3' / valign=top location=outside;
endlayout;
layout overlay;
boxplot x=_SEX2 y=_HEIGHT2 / name='box4' boxwidth=0.4 groupdisplay=Cluster clusterwidth=1.0;
entry halign=center 'Titre 4' / valign=top location=outside;
endlayout;
endlayout;
endgraph;
end;
run;
proc sgrender DATA=SASHELP.CLASS template=sgdesign;
dynamic _SEX="SEX" _HEIGHT="HEIGHT" _AGE="AGE" _WEIGHT="WEIGHT" _NAME="NAME" _WEIGHT2="WEIGHT" _SEX2="SEX" _HEIGHT2="HEIGHT";
run;À l'aide des procédures TEMPLATE et SGENDER, vous pouvez contrôler l'apparence de vos boxplots.
Ci-dessous un exemple de programme SAS :
PROC TEMPLATE ;
DEFINE STATGRAPH boxplot.lapin / STORE=work.modeles ;
DYNAMIC couleur1 couleur2 ;
BEGINGRAPH ;
LAYOUT LATTICE / ROWS=2 ROWWEIGHTS=(.8 .2) ;
LAYOUT OVERLAY ;
BOXPLOT X=country Y=actual / FILLATTRS=(COLOR=couleur1) ;
BOXPLOT X=country Y=actualBis / FILLATTRS=(COLOR=couleur2) ;
ENDLAYOUT ;
LAYOUT GRIDDED / ROWS=2 ;
BLOCKPLOT X=country BLOCK=moy / VALUEHALIGN=CENTER
DISPLAY=(label VALUES) ;
BLOCKPLOT X=country BLOCK=et / VALUEHALIGN=CENTER
DISPLAY=(label VALUES) ;
ENDLAYOUT ;
ENDLAYOUT ;
ENDGRAPH ;
END ;
RUN ;
ODS PATH (PREPEND) work.modeles ;
PROC SQL ;
CREATE TABLE work.sales AS
SELECT *,
CASE WHEN (country EQT "G") THEN actual ELSE . END AS actualBis,
MEAN(actual) AS moy LABEL="Moy=",
STD(actual) AS et LABEL="Std="
FROM sashelp.prdsale
WHERE FIRST(country) IN ("G","C")
GROUP BY country ;
QUIT ;
PROC SGRENDER DATA=work.sales TEMPLATE=boxplot.lapin ;
DYNAMIC couleur1 = "red" couleur2 = "yellow" ;
RUN ;


