FAQ SASConsultez toutes les FAQ
Nombre d'auteurs : 13, nombre de questions : 308, dernière mise à jour : 5 avril 2016 Ajouter une question
Cette F.A.Q., qui traite de tout type de questions portant sur l'outil SAS, a été réalisée à partir des contributions des membres des forums sas de developpez.com en vue de répondre à des questions fréquemment posées par les utilisateurs et grâce à SAS France qui a bien voulu nous donner accès à ses sources.
Si vous désirez contribuer à l'amélioration de cette F.A.Q., vous pouvez participer au billet de participation à l'enrichissement de la faq SAS , ou contacter le responsable SAS , ou contacter un des responsables de l'équipe Business Intelligence .
Nous espérons que cette F.A.Q. saura répondre à un maximum de vos questions. Nous vous souhaitons une bonne lecture.
L'équipe SAS de developpez.com remercie les contributeurs actuels : ash_rmy , bahraoui , datametric , fafabzh6 , Fleur-Anne.Blain , green_fr , oncle_pete , raf64flo , rastoix , s_a_m et steelspirit .
L'équipe SAS de developpez.com remercie aussi claudeLeloup et jacques_jean pour leurs relectures attentives de la F.A.Q. dans le but de chasser les fautes d'orthographes.
- 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. ?
- Comment exporter des sorties graphiques SAS dans Microsoft Office 97, 2000 ou XP ?
- Comment superposer un histogramme et une courbe sur le même graphe ?
- Comment faire pour que les caractères accentués soient pris en compte dans les sorties graphiques ?
- Comment utiliser les valeurs d'une variable, comme labels sur les points d'un graphique de type "nuage de points" ?
- Quels sont les pré-requis pour afficher des graphiques de type JAVA créés avec SAS 8 et SAS 9 ?
- Comment supprimer le Drill Down qui s'affiche sur le graphique en sortie HTML avec la procédure GPLOT ?
- Comment ajouter un texte personnalisé sur un graphique, à l'emplacement de son choix ?
- Comment ordonner les modalités de la variable affichée sur l’axe des abscisses d’un graphique ?
- Comment afficher du texte en exposant au niveau du titre d'un graphique ?
- Comment changer l'ordre d'apparition des sous-groupes dans un diagramme en barres (PROC GCHART) ?
Avec les options 'tick' et 'color' vous pouvez contrôler entièrement l'apparence de l'affichage des valeurs de l'axe des abscisses.
| Code sas : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 | 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 :
| Code sas : | Sélectionner tout |
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 | 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 :
| Code sas : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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.
| Code sas : | Sélectionner tout |
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 | 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.
| Code sas : | Sélectionner tout |
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 | 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.
| Code sas : | Sélectionner tout |
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 | 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 ; |
La TS674 détaille les méthodes pour exporter, dans Microsoft Office, des sorties produites par SAS/GRAPH.
Elle est disponible à l'adresse suivante : http://support.sas.com/techsup/techn...674/ts674.html
Voici un exemple de code SAS qui représente sur le même graphique par des barres verticales les ventes d'une société pour les 6 premiers mois de l'année et par une courbe les bénéfices correspondants :
| Code sas : | Sélectionner tout |
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 | Data FY1992 ;/*Génération des données pour le graphe*/
input month date7. sales earnings ;
label month= '1992' ;
cards ;
01jan92 375 90
01feb92 420 120
01mar92 400 210
01apr92 360 170
01may92 280 150
01jun92 320 140
;
title1 height = 6 pct 'JLR Entreprises' ;
title2 height = 4 pct 'Semi-annual Report' ;
footnote box = 1 blank = yes height = 4 pct
color = graycc font = swissb '03' x
color = black font = swissl height = 3 pct
' SALES - $ - EARNINGS ' ;
axis1 order = '01jan92'd to '01jun92'd by month offset = (5) major = none ;
axis2 label = none order = 0 to 5000 by 100 offset = (0,0) ;
symbol1 color = graycc interpol = needle value = none width = 200 ;
symbol2 color = black interpol = join font = swissb value = $
height = 5 pct width = 3 ;
proc GPLOT data = FY1992 ;
format month monname3. ;
plot sales*month = 1 earnings*month = 2 / overlay
frame
haxis = axis1 vaxis = axis2 ;
run ;
quit ; |
Il y a d'autres possibilités sous SAS pour obtenir le même résultat notamment en utilisant la fonction BAR ou l'instruction Template de la procédure GREPLAY.
Si vous disposez du module QC, vous pouvez également utiliser les procédures CAPABILITY ou SHEWHART.
Il faut utiliser les options graphiques ci-dessous.
| Code sas : | Sélectionner tout |
goptions devmap=winansi keymap=winansi ;
On considère un nuage de points résultant du croisement des variables X et Y, sur lequel on souhaite afficher pour chaque point, la valeur d'une troisième variable ID.
• Exemple en utilisant la proc Plot :
| Code sas : | Sélectionner tout |
1 2 3 | Proc plot data=work.essai ;
plot x*y $ id;
run ; |
• Exemple en utilisant la proc Gplot :
| Code sas : | Sélectionner tout |
1 2 3 4 5 | Proc gplot data=work.essai ;
plot x*y;
symbol1 pointlabel=("#id");
run;
quit; |
La machine virtuelle JAVA de Microsoft doit être présente sur le PC où un graphique JAVA, créé avec SAS 8, est affiché. Avec SAS 9, le pré-requis a changé : il faut désormais disposer du JRE (Java Runtime Environment), version 1.4.1 au minimum.
Pour rappel, un tel graphique est créé en spécifiant dans son programme :
goptions device=java ;
et en créant un rapport au format HTML ou RTF (ods html ou ods rtf).
Des exemples de graphiques JAVA sont disponibles sur notre site :
http://support.sas.com/rnd/datavisualization/Java.html
Utiliser l'option DESCRIPTION dans la ligne de commande PLOT comme suivant :
| Code sas : | Sélectionner tout |
1 2 3 4 5 6 | ods html path="c:\a\" body="test.html"; proc gplot data=sashelp.class; plot weight*height /DESCRIPTION=' '; run; quit; ods html close; |
Avec l'instruction note. Elle est valide au sein des procédures GBARLINE, GCHART, GCONTOUR, GFONT, GMAP, GPLOT, GPRINT,GRADAR, GSLIDE et G3D. Voici un exemple d'utilisation ci-après où la hauteur du texte, sa position, sa police sont paramétrés.
| Code sas : | Sélectionner tout |
note h=3 c=black j=center move=(31,83)pct f=swissb 'Un exemple de texte';
Avec l'instruction AXIS et son option ORDER.
| Code sas : | Sélectionner tout |
Axis1 order=(‘France’ ‘Allemagne’ ‘USA’) ;
L'astuce consiste à utiliser l'option MOVE, au niveau de la définition du titre, en conjonction avec la taille du texte.
Prenons un exemple, dont le but est d’afficher le titre : Mon 1er graphique.
| Code sas : | Sélectionner tout |
1 2 3 4 5 | title1 h=2 f=swiss 'Mon 1' move=(+0,+1) h=1 'er' move=(+0,-1) h=2 'graphique'; proc gchart data=sashelp.prdsale; vbar country / sumvar=actual ; run; quit; |
Décomposons cet exemple :
h=2 f=swiss 'Mon 1': la taille du texte est 2. La police est Swiss. Le texte 'Mon 1' est écrit.
move=(+0,+1) h=1 'er': l'écriture du texte est déplacée en hauteur. La taille du texte est divisée par 2. Le texte 'er' est écrit.
move=(+0,-1) h=2 'graphique': l'écriture du texte est re-déplacée à son niveau initial. Le texte 'graphique' est écrit.
Pour modifier l'affichage des sous-groupes vous devez utiliser l'option SUBGROUP de l'instruction HBAR et avoir préalablement bien ordonné vos données avec une PROC FORMAT (par exemple).
Ci dessous un exemple de code permettant de faire cette manipulation :
| Code : | Sélectionner tout |
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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | DATA test;
INPUT ville $ mois sexe $ statut $ class_age $ var1;
CARDS;
lille 2 M non <10 238
paris 2 M non <10 383
paris 2 F non <10 426
lille 1 F non <10 476
lille 1 M non >50 1289
paris 1 M non <10 2046
paris 1 M non >50 2271
paris 1 F non <10 2672
paris 1 F oui >50 3226
lille 1 F oui >50 3322
lille 2 M oui >10 3808
paris 2 M oui >10 5783
lille 1 M oui >10 7199
lille 2 F oui >10 8100
paris 2 M nsp >50 244
lille 2 M nsp <10 334
paris 2 F nsp <10 428
paris 2 F nsp >50 485
lille 2 F nsp <10 520
paris 2 M nsp >10 1127
lille 1 M nsp >50 1220
lille 1 F nsp >50 2269
paris 2 F nsp >10 2278
lille 1 M nsp >10 4529
lille 2 M nsp >10 4637
paris 1 M nsp >10 5612
lille 1 F nsp >10 9277
lille 2 F nsp >10 9936
paris 2 F oui <10 1193
paris 2 M oui <10 1465
paris 2 M oui >50 2426
paris 1 F oui <10 3432
paris 1 M oui <10 3547
paris 2 F oui >50 4120
lille 1 M oui <10 4896
lille 2 M oui <10 4992
lille 2 F oui <10 7982
lille 2 M oui >50 9200
lille 1 F oui <10 9542
paris 1 M oui >50 10222
;
RUN;
PROC FORMAT;
INVALUE statut_infmt "oui" = 1
"non" = 2
"nsp" = 3;
VALUE statut_fmt
1 = "oui"
2 = "non"
3 = "nsp" ;
RUN;
DATA test;
SET test;
rang = INPUT(statut, statut_infmt.);
RUN;
AXIS1 LABEL = NONE;
LEGEND1 LABEL = NONE;
OPTION NOBYLINE;
PROC GCHART DATA = test;
FORMAT rang statut_fmt. ;
HBAR class_age / SUBGROUP = rang
LEGEND = LEGEND1
FREQ = var1
TYPE = PERCENT
NOSTAT
MAXIS = axis1 ;
RUN; QUIT ; |
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2025 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.



