Publicado el :
Informes CREATION_INTERNE

Diagrama de barras horizontales apiladas al 100%

Este código también está disponible en: Deutsch English Français
En espera de validación
El script comienza creando un conjunto de datos 'my_data' con información sobre categorías, series y montos. Luego, utiliza PROC SQL para calcular la suma total de los montos para cada categoría ('bartotal'). Un segundo DATA STEP se utiliza para calcular el porcentaje de cada monto en relación con el total de su categoría ('catpct') y aplicar un formato de porcentaje. Finalmente, la salida ODS se configura para generar un archivo HTML y una imagen PNG. PROC SGPLOT se utiliza para crear el diagrama de barras horizontales apiladas al 100%, usando 'category' en el eje Y, 'catpct' como respuesta, y 'series' para la agrupación de barras. Se aplican títulos y atributos de estilo para mejorar la presentación.
Análisis de datos

Type : CREATION_INTERNE


Los datos iniciales se crean directamente en el script a través de un bloque DATALINES en un DATA STEP. Luego se transforman y enriquecen mediante pasos PROC SQL y DATA STEP posteriores.

1 Bloque de código
DATA STEP Data
Explicación :
Este bloque DATA STEP crea un conjunto de datos llamado 'my_data'. Utiliza la declaración 'input' para definir tres variables (CATEGORY, SERIES, AMOUNT) y el bloque 'datalines' para leer directamente los datos en el conjunto de datos.
¡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;
2 Bloque de código
PROC SQL Data
Explicación :
Este procedimiento SQL modifica el conjunto de datos 'my_data'. Calcula la suma de 'amount' para cada 'category', almacena este total en una nueva columna 'bartotal', y recrea el conjunto de datos 'my_data' con esta nueva columna. Es un paso de agregación esencial para los cálculos de porcentaje.
¡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;
3 Bloque de código
DATA STEP
Explicación :
Este DATA STEP actualiza el conjunto de datos existente 'my_data'. Calcula el porcentaje ('catpct') de cada 'amount' en relación con el 'bartotal' correspondiente. Se aplica un formato 'percent6.0' a la nueva variable 'catpct' para una visualización en porcentaje.
¡Copiado!
1DATA my_data; SET my_data;
2FORMAT catpct percent6.0;
3catpct=amount/bartotal;
4RUN;
4 Bloque de código
PROC SGPLOT
Explicación :
Este bloque gestiona la salida y la visualización. Las declaraciones ODS (Output Delivery System) se utilizan para generar una salida HTML y una imagen PNG del gráfico. Luego se llama a PROC SGPLOT para crear un diagrama de barras horizontales apiladas al 100%. Utiliza 'category' en el eje Y, 'catpct' como variable de respuesta y 'series' para agrupar las barras, mostrando así la contribución proporcional de cada serie dentro de cada categoría. Se configuran opciones de estilo, títulos y ejes para personalizar la apariencia del gráfico.
¡Copiado!
1ODS LISTING CLOSE;
2ODS HTML path=odsout body="&name..htm"
3 (title="SGplot 100% Stacked Horizontal Bar")
4 style=htmlblue;
5 
6ods graphics / imagefmt=png imagename="&name"
7 width=800px height=600px noborder imagemap;
8 
9title1 color=gray33 ls=0.5 h=23pt "100% Stacked Horizontal Bar";
10title2 color=gray33 ls=0.5 h=17pt "Compares the percent each value";
11title3 color=gray33 ls=0.5 h=17pt "to a total across categories";
12 
13PROC SGPLOT DATA=my_data noautolegend pad=(left=10% right=15%);
14label catpct='PERCENT';
15styleattrs datacolors=(cx9999ff cx993366 cxffffcc);
16hbar category / response=catpct stat=sum
17 group=series /*barwidth=.6*/
18 outlineattrs=(color=black) nostatlabel;
19xaxis
20 values=(0 to 1 BY .2)
21 labelattrs=(size=16pt weight=bold color=gray33)
22 valueattrs=(size=16pt weight=bold color=gray33)
23 offsetmax=0 grid minor minorcount=1;
24yaxis
25 labelattrs=(size=16pt weight=bold color=gray33)
26 valueattrs=(size=16pt weight=bold color=gray33)
27 display=(noticks);
28RUN;
29 
30QUIT;
31ODS HTML CLOSE;
32ODS 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.