Publicado el :
Informes SASHELP

Creación de un Panel Gráfico Compuesto con GTL

Este código también está disponible en: Deutsch English Français
En espera de validación
Este script ilustra el uso avanzado del procedimiento TEMPLATE y del lenguaje GTL (Graph Template Language) para definir un diseño de cuadrícula personalizado (lattice layout). Visualiza los datos del estudio cardíaco (SASHELP.HEART) comparando las características según el sexo y la causa de muerte. El panel incluye un diagrama de dispersión (Colesterol vs Sistólica), un diagrama de barras de los pesos medios y diagramas de caja y bigotes de la presión diastólica.
Análisis de datos

Type : SASHELP


Los datos provienen de la tabla estándar SASHELP.HEART. Se utiliza un paso DATA para recodificar algunos valores de la variable 'deathcause' (CVD, CHD) para una mejor legibilidad gráfica.

1 Bloque de código
INITIALIZATION
Explicación :
Configuración del entorno de salida ODS (Output Delivery System), definición de la ruta de salida y de la resolución de las imágenes (DPI).
¡Copiado!
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 Bloque de código
PROC TEMPLATE
Explicación :
Definición del modelo gráfico 'Fig_7_0_Panel' utilizando GTL. El diseño de cuadrícula 'lattice' divide el espacio en dos columnas (ponderación 60%/40%). La primera columna contiene un diagrama de dispersión. La segunda columna se subdivide en dos líneas que contienen un diagrama de barras y un diagrama de caja y bigotes.
¡Copiado!
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 Bloque de código
DATA STEP Data
Explicación :
Preparación de datos: lectura de SASHELP.HEART (con selección de variables mediante KEEP) y recodificación de cadenas de caracteres largas en la variable 'deathcause' para simplificar la visualización en los ejes gráficos.
¡Copiado!
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 Bloque de código
PROC SGRENDER
Explicación :
Generación final del gráfico. Se activa ODS Graphics con dimensiones específicas, luego se llama a PROC SGRENDER para aplicar el modelo definido previamente ('Fig_7_0_Panel') a los datos preparados ('heart').
¡Copiado!
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;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.