Publié le :
Reporting SASHELP

Personnalisation Avancée des Légendes Graphiques avec PROC SGPLOT

Ce code est également disponible en : Deutsch English Español
Ce script illustre comment modifier l'apparence des légendes dans PROC SGPLOT via l'instruction KEYLEGEND. Il couvre plusieurs cas d'usage : ajustement de la longueur des lignes, modification de l'échelle des symboles, contrôle du ratio d'aspect des zones de remplissage, et utilisation de formats personnalisés contenant des caractères Unicode (symbole 'supérieur ou égal').
Analyse des données

Type : SASHELP


Le script utilise exclusivement les tables d'exemple standards SASHELP.CARS et SASHELP.HEART.

1 Bloc de code
PROC FORMAT
Explication :
Configuration de l'environnement de sortie graphique (ODS) et création d'un format personnalisé 'agegroupUnicode' qui utilise une séquence d'échappement pour afficher le symbole mathématique 'supérieur ou égal' (Unicode 2265).
Copié !
1%let gpath='.';
2%let dpi=200;
3 
4ods html close;
5ods listing gpath=&gpath image_dpi=&dpi;
6 
7/*--Unicode Format--*/
8PROC FORMAT;
9 value agegroupUnicode
10 0 -< 40 = '< 40'
11 40 -< 50 = '40 < 50'
12 50 -< 60 = '50 < 60'
13 60 - high = "(*ESC*){unicode '2265'x} 60"
14 ;
15RUN;
2 Bloc de code
PROC SGPLOT
Explication :
Génération d'un graphique de régression polynomiale de base pour établir une référence visuelle de la légende par défaut.
Copié !
1/*--Legend default--*/
2ods graphics / reset width=5in height=3in imagename='LegendDefault';
3title 'MSRP by Horsepower';
4PROC SGPLOT DATA=sashelp.cars(where=(type eq 'Sedan'));
5 styleattrs axisextent=DATA;
6 reg x=horsepower y=msrp / cli clm degree=2;
7RUN;
3 Bloc de code
PROC SGPLOT
Explication :
Modification de la longueur de la ligne représentative dans la légende à l'aide de l'option 'linelength=32' dans l'instruction KEYLEGEND.
Copié !
1/*--Legend Line Length--*/
2ods graphics / reset width=5in height=3in imagename='LegendLine';
3title 'MSRP by Horsepower';
4PROC SGPLOT DATA=sashelp.cars(where=(type eq 'Sedan'));
5 styleattrs axisextent=DATA;
6 reg x=horsepower y=msrp / cli clm degree=2;
7 keylegend / linelength=32;
8RUN;
4 Bloc de code
PROC SGPLOT
Explication :
Combinaison de la longueur de ligne et de l'option 'scale=1.2' pour agrandir globalement les éléments de la légende.
Copié !
1/*--Legend Line Length and Swatch--*/
2ods graphics / reset width=5in height=3in imagename='LegendLineScale';
3title 'MSRP by Horsepower';
4PROC SGPLOT DATA=sashelp.cars(where=(type eq 'Sedan'));
5 styleattrs axisextent=DATA;
6 reg x=horsepower y=msrp / cli clm degree=2;
7 keylegend / linelength=32 scale=1.2;
8RUN;
5 Bloc de code
PROC SGPLOT
Explication :
Contrôle précis des dimensions des rectangles de légende (swatches) avec 'fillheight' (hauteur) et 'fillaspect' (ratio d'aspect, ici le nombre d'or).
Copié !
1/*--Legend Line Length and Swatch--*/
2ods graphics / reset width=5in height=3in imagename='LegendLineAspect';
3title 'MSRP by Horsepower';
4PROC SGPLOT DATA=sashelp.cars(where=(type eq 'Sedan'));
5 styleattrs axisextent=DATA;
6 reg x=horsepower y=msrp / cli clm degree=2;
7 keylegend / linelength=32 fillheight=2.5pct fillaspect=golden;
8RUN;
6 Bloc de code
PROC SGPLOT
Explication :
Graphique en barres complexe utilisant le format Unicode défini précédemment. La légende est placée à l'intérieur du graphique ('location=inside'), rendue opaque, et ses dimensions sont personnalisées pour s'adapter au style 'dataskin=pressed'.
Copié !
1/*--Legend Swatch--*/
2ods graphics / reset width=5in height=3in imagename='DeathsUnicode';
3title 'Counts by Death Cause and Age Group';
4PROC SGPLOT DATA=sashelp.heart(where=(deathcause ne 'Unknown')) nocycleattrs noborder;
5 FORMAT ageatdeath agegroupUnicode.;
6 vbar ageatdeath / group=deathcause groupdisplay=cluster fillattrs=(color=white);
7 vbar ageatdeath / group=deathcause groupdisplay=cluster nooutline
8 baselineattrs=(thickness=0) dataskin=pressed filltype=gradient name='a';
9 keylegend 'a' / location=inside across=1 title='' fillheight=2.5pct fillaspect=2.5 opaque;
10 xaxis display=(nolabel noline);
11 yaxis label='Count' grid display=(noline noticks);
12RUN;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Banner
Le Conseil de l'Expert
Expert
Stéphanie
Spécialiste Machine Learning et IA.
« La clarté d'un graphique ne repose pas uniquement sur la data-visualisation elle-même, mais sur la précision de sa légende. L'utilisation de la procédure PROC SGPLOT offre un contrôle granulaire sur l'instruction KEYLEGEND, permettant de transformer une légende générique en un outil de lecture haute performance. Ce script démontre des techniques avancées comme l'ajustement du LINELENGTH pour faciliter la distinction entre les types de lignes (régressions vs intervalles de confiance) et la modification du FILLASPECT (ratio d'aspect) pour les zones de remplissage. L'intégration de caractères Unicode (symbole $\ge$) via un format personnalisé (PROC FORMAT) assure une rigueur scientifique indispensable pour la publication de rapports d'analyse. »