FAQ SASConsultez toutes les FAQ
Nombre d'auteurs : 14, nombre de questions : 232, dernière mise à jour : 20 décembre 2012
- 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
;