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 © 2024 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.