Publicado el :
Informes Gráficos CREATION_INTERNE

Gráfico de barras apiladas 100% (3D) con SGPLOT

Este código también está disponible en: Deutsch English Français
En espera de validación
El script comienza definiendo una variable macro 'name' y un fileref 'odsout'. Luego crea un conjunto de datos llamado 'my_data' a partir de datos en línea (datalines). Se utiliza un PROC SQL para agregar una columna 'bartotal' al conjunto de datos, que representa la suma de 'amount' por 'category'. Un segundo DATA STEP calcula el 'catpct' (porcentaje de cada 'amount' en relación con el 'bartotal') y formatea esta nueva variable como porcentaje. Finalmente, configura las opciones ODS para la salida HTML, define los títulos del gráfico y utiliza PROC SGPLOT para crear un gráfico de barras verticales apiladas. Las opciones clave de SGPLOT incluyen 'response=catpct', 'group=series' y 'dataskin=sheen' para el efecto 3D.
Análisis de datos

Type : CREATION_INTERNE


El conjunto de datos 'my_data' se crea completamente al inicio del script utilizando el método DATALINES. No se utilizan datos externos ni de la biblioteca SASHELP como fuente inicial.

1 Bloque de código
MACRO/GLOBAL
Explicación :
Define la variable macro 'name' como 'col6' que se utilizará para nombrar el archivo de salida HTML y la imagen. 'filename odsout '.' ' dirige la salida ODS al directorio de trabajo actual.
¡Copiado!
1%let name=col6;
2filename odsout '.';
2 Bloque de código
DATA STEP Data
Explicación :
Crea el conjunto de datos 'my_data' con las variables CATEGORY, SERIES (carácter) y AMOUNT (numérica) leyendo los datos proporcionados a través de la declaración DATALINES.
¡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
Explicación :
Modifica el conjunto de datos 'my_data' añadiéndole una nueva columna 'bartotal'. Esta columna contiene la suma de 'amount' para cada 'category', calculada mediante una agregación SQL.
¡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
Explicación :
Un segundo DATA STEP que lee el conjunto de datos 'my_data', calcula el porcentaje 'catpct' de 'amount' en relación con el 'bartotal' para cada observación, y aplica un formato de porcentaje a esta nueva variable.
¡Copiado!
1DATA my_data; SET my_data;
2FORMAT catpct percent6.0;
3catpct=amount/bartotal;
4RUN;
5 Bloque de código
ODS/OPTIONS
Explicación :
Cierra la salida LISTING por defecto. Abre un destino ODS HTML, especificando la ruta de salida, el nombre del archivo ('col6.htm'), un título para la página HTML y un estilo 'htmlblue'. Luego configura las opciones gráficas ODS para generar imágenes PNG con un tamaño específico, sin borde y con un mapa de imagen. Finalmente, define dos títulos para el gráfico con propiedades de color, tamaño y estilo.
¡Copiado!
1ODS LISTING CLOSE;
2ODS HTML path=odsout body="&name..htm"
3 (title="SGplot 100% Stacked Bar (3D)")
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 Bar";
10title2 color=gray33 ls=0.5 h=17pt "With 3D Shading";
6 Bloque de código
PROC SGPLOT
Explicación :
Utiliza PROC SGPLOT para crear un gráfico de barras apiladas. Las barras se definen por 'category' y se apilan por 'series', con 'catpct' como variable de respuesta. La opción 'dataskin=sheen' añade un efecto 3D. El estilo, los colores, las etiquetas y los atributos de los ejes se configuran para mejorar la apariencia del gráfico. Después de la ejecución, el destino ODS HTML se cierra y la salida LISTING se vuelve a abrir.
¡Copiado!
1PROC SGPLOT DATA=my_data noautolegend pad=(left=10% right=15%);
2label catpct='PERCENT';
3styleattrs datacolors=(cx9999ff cx993366 cxffffcc);
4vbar category / response=catpct stat=sum
5 group=series barwidth=.6
6 dataskin=sheen /* <--- basically, added this line! */
7 outlineattrs=(color=black) nostatlabel;
8yaxis
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;
13xaxis
14 labelattrs=(size=16pt weight=bold color=gray33)
15 valueattrs=(size=16pt weight=bold color=gray33)
16 display=(noticks);
17RUN;
18 
19QUIT;
20ODS HTML CLOSE;
21ODS 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.