Publicado el :
Visualización CREATION_INTERNE

Gráfico de barras horizontales apiladas al 100% con SGPLOT

Este código también está disponible en: Deutsch English Français
En espera de validación
El script inicializa una macro-variable y un fileref para la salida ODS. Luego, crea el conjunto de datos `my_data` a partir de datos en línea (`datalines`). Se utiliza un paso `PROC SQL` para calcular la suma total (`bartotal`) de `AMOUNT` para cada `CATEGORY`. Un segundo `DATA STEP` calcula el porcentaje (`catpct`) de cada `AMOUNT` con respecto a su `bartotal` correspondiente y aplica un formato. Las destinos ODS HTML y ODS Graphics se configuran para generar un archivo HTML con el gráfico. Finalmente, se utiliza `PROC SGPLOT` para crear un gráfico de barras horizontales apiladas al 100%, estilizado con colores personalizados, un efecto 3D ('sheen') y atributos de eje específicos. La salida se genera en un archivo HTML y las destinos ODS se cierran.
Análisis de datos

Type : CREATION_INTERNE


Los datos fuente `my_data` se crean directamente en el script SAS utilizando la instrucción `datalines`, lo que permite una ejecución autónoma sin dependencias externas.

1 Bloque de código
Declaraciones Globales
Explicación :
Define una macro-variable `name` para el nombre del archivo y un fileref `odsout` que apunta al directorio actual para las salidas ODS.
¡Copiado!
1%let name=bar6;
2 
3/*
4Set your current-working-directory (to read/write files), if you need to ...
5%let rc=%sysfunc(dlgcdir('c:\someplace\public_html'));
6*/
7filename odsout '.';
2 Bloque de código
DATA STEP Data
Explicación :
Crea un conjunto de datos SAS llamado `my_data` utilizando datos proporcionados en línea a través de la instrucción `datalines`, con las variables `CATEGORY`, `SERIES` (carácter) y `AMOUNT`.
¡Copiado!
1DATA my_data;
2INPUT CATEGORY SERIES $ 3-11 AMOUNT;
3DATALINES;
41 Series A 5.0
52 Series A 6.8
63 Series A 9.2
71 Series B 6.5
82 Series B 6.9
93 Series B 5.6
101 Series C 2.3
112 Series C 3.1
123 Series C 2.3
13;
14RUN;
3 Bloque de código
PROC SQL Data
Explicación :
Utiliza `PROC SQL` para modificar el conjunto de datos `my_data`. Recalcula `my_data` añadiendo una nueva columna `bartotal`, que es la suma de `AMOUNT` para cada `CATEGORY`. La cláusula `GROUP BY` asegura que `bartotal` se calcule por categoría.
¡Copiado!
1PROC SQL;
2 create TABLE my_data as
3 select *, sum(amount) as bartotal
4 from my_data
5 group BY category;
6QUIT; RUN;
4 Bloque de código
DATA STEP Data
Explicación :
Un segundo `DATA STEP` lee el conjunto de datos `my_data` (modificado por `PROC SQL`) y calcula una nueva variable `catpct` que representa el porcentaje de `AMOUNT` con respecto a `bartotal`. Se aplica un formato `percent6.0` a `catpct`.
¡Copiado!
1DATA my_data; SET my_data;
2FORMAT catpct percent6.0;
3catpct=amount/bartotal;
4RUN;
5 Bloque de código
ODS HTML
Explicación :
Cierra el destino ODS LISTING. Abre el destino ODS HTML, especifica el archivo de salida HTML (`bar6.htm`), el título de la página y el estilo `htmlblue`. Configura `ODS GRAPHICS` para la exportación de imágenes PNG con dimensiones específicas, y define dos títulos para el gráfico.
¡Copiado!
1ODS LISTING CLOSE;
2ODS HTML path=odsout body="&name..htm"
3 (title="SGplot 100% Stacked Horizontal Bar (3D)")
4 style=htmlblue;
5 
6ods graphics / imagefmt=png imagename="&name"
7 width=800px height=600px noborder imagenap;
8 
9title1 color=gray33 ls=0.5 h=23pt "100% Stacked Horizontal Bar";
10title2 color=gray33 ls=0.5 h=17pt "With 3D Shading";
6 Bloque de código
PROC SGPLOT
Explicación :
Genera un gráfico de barras horizontales apiladas al 100% utilizando `PROC SGPLOT`. Se utiliza el conjunto de datos `my_data`. La opción `hbar` crea las barras, `response=catpct` indica la variable a representar, `stat=sum` agrega los valores y `group=series` apila las barras por `SERIES`. `dataskin=sheen` aplica un efecto visual 3D. Los ejes X e Y se configuran con atributos de estilo y visualización personalizados.
¡Copiado!
1PROC SGPLOT DATA=my_data noautolegend pad=(left=10% right=15%);
2label catpct='PERCENT';
3styleattrs datacolors=(cx9999ff cx993366 cxffffcc);
4hbar category / response=catpct stat=sum
5 group=series /*barwidth=.6*/
6 dataskin=sheen /* <--- basically, added this line! */
7 outlineattrs=(color=black) nostatlabel;
8xaxis
9 values=(0 to 1 BY .2)
10 labelattrs=(size=16pt weight=bold color=gray33)
11 valueattrs=(size=16pt weight=bold color=gray33)
12 offsetmax=0 grid minor minorcount=1;
13yaxis
14 labelattrs=(size=16pt weight=bold color=gray33)
15 valueattrs=(size=16pt weight=bold color=gray33)
16 display=(noticks);
17RUN;
7 Bloque de código
ODS HTML
¡Copiado!
1QUIT;
2ODS HTML CLOSE;
3ODS LISTING;
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.