Publié le :
Reporting SASHELP

Création d'un Panneau Graphique Composite avec GTL

Ce code est également disponible en : Deutsch English Español
En attente de validation
Ce script illustre l'utilisation avancée de la procédure TEMPLATE et du langage GTL (Graph Template Language) pour définir une mise en page personnalisée (lattice layout). Il visualise les données de l'étude cardiaque (SASHELP.HEART) en comparant les caractéristiques selon le sexe et la cause de décès. Le panneau inclut un nuage de points (Cholestérol vs Systolique), un diagramme à barres des poids moyens et des boîtes à moustaches de la pression diastolique.
Analyse des données

Type : SASHELP


Les données proviennent de la table standard SASHELP.HEART. Une étape DATA est utilisée pour recoder certaines valeurs de la variable 'deathcause' (CVD, CHD) pour une meilleure lisibilité graphique.

1 Bloc de code
INITIALIZATION
Explication :
Configuration de l'environnement de sortie ODS (Output Delivery System), définition du chemin de sortie et de la résolution des images (DPI).
Copié !
1%let gpath='.'; /*--Put your Folder Name here--*/
2%let dpi=300;
3ods listing style=listing image_dpi=&dpi gpath=&gpath;
4ods html close;
2 Bloc de code
PROC TEMPLATE
Explication :
Définition du modèle graphique 'Fig_7_0_Panel' utilisant GTL. La mise en page 'lattice' divise l'espace en deux colonnes (pondération 60%/40%). La première colonne contient un scatterplot. La seconde colonne est subdivisée en deux lignes contenant un barchart et un boxplot.
Copié !
1PROC TEMPLATE;
2 define statgraph Fig_7_0_Panel;
3 begingraph;
4 entrytitle "Characteristics of Subjects in the Study";
5 layout lattice / columns=2 columnweights=(0.6 0.4) columngutter=10px;
6 sidebar / spacefill=false;
7 discretelegend 'a';
8 endsidebar;
9 layout overlay;
10 scatterplot x=cholesterol y=systolic / group=sex name='a'
11 markerattrs=(symbol=circlefilled) datatransparency=0.5;
12 endlayout;
13 layout lattice / rows=2 columndatarange=union;
14 columnaxes;
15 columnaxis / discreteopts=(tickvaluefitpolicy=stagger) tickvalueattrs=(size=6);
16 endcolumnaxes;
17 layout overlay / yaxisopts=(labelattrs=(size=8) tickvalueattrs=(size=6)
18 label='Weight(mean)' offsetmin=0)
19 xaxisopts=(labelattrs=(size=8) tickvalueattrs=(size=6));
20 barchart x=deathcause y=weight / group=sex groupdisplay=cluster stat=mean
21 baselineattrs=(thickness=0) fillattrs=(transparency=0.2) outlineattrs=(color=black);
22 endlayout;
23 layout overlay / yaxisopts=(labelattrs=(size=8) tickvalueattrs=(size=6))
24 xaxisopts=(labelattrs=(size=8) tickvalueattrs=(size=6));
25 boxplot y=diastolic x=deathcause / group=sex groupdisplay=cluster
26 fillattrs=(transparency=0.2) meanattrs=(size=5 color=black) outlineattrs=(color=black);
27 endlayout;
28 endlayout;
29 endlayout;
30 endgraph;
31 END;
32RUN;
3 Bloc de code
DATA STEP Data
Explication :
Préparation des données : lecture de SASHELP.HEART (avec sélection des variables via KEEP) et recodage des chaînes de caractères longues dans la variable 'deathcause' pour simplifier l'affichage sur les axes graphiques.
Copié !
1DATA heart;
2 SET sashelp.heart(keep=Cholesterol Systolic Diastolic Deathcause Sex Weight);
3 IF deathcause="Cerebral Vascular Disease" THEN deathcause="CVD";
4 ELSE IF deathcause="Coronary Heart Disease" THEN deathcause="CHD";
5 ELSE deathcause=deathcause;
6RUN;
4 Bloc de code
PROC SGRENDER
Explication :
Génération finale du graphique. On active ODS Graphics avec des dimensions spécifiques, puis on appelle PROC SGRENDER pour appliquer le modèle défini précédemment ('Fig_7_0_Panel') aux données préparées ('heart').
Copié !
1ods listing;
2ods graphics / reset width=6in height=2.4in imagename="7_0_Panel_V93";
3PROC SGRENDER DATA=heart template=Fig_7_0_Panel;
4RUN;
5 
6title;
7footnote;
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.
« Le langage GTL (Graph Template Language) représente le summum de la personnalisation graphique sous SAS, surpassant les capacités de la procédure SGPLOT dès qu'il s'agit de structures complexes. Ce script illustre parfaitement la puissance de l'instruction LAYOUT LATTICE, qui permet de partitionner l'espace graphique en cellules hétérogènes. Ici, l'expert combine un nuage de points occupant 60 % de la largeur avec une pile verticale de deux graphiques (barres et boîtes à moustaches) à droite. Cette approche est indispensable pour créer des tableaux de bord scientifiques où l'on souhaite corréler visuellement différentes dimensions d'un même jeu de données, comme les facteurs de risque cardiovasculaire de la table SASHELP.HEART. »