Publié le :
Reporting Graphique CREATION_INTERNE

Graphique à barres empilées 100% (3D) avec SGPLOT

Ce code est également disponible en : Deutsch English Español
En attente de validation
Le script commence par définir une variable macro 'name' et un fileref 'odsout'. Il crée ensuite un jeu de données nommé 'my_data' à partir de données en ligne (datalines). Une PROC SQL est utilisée pour ajouter une colonne 'bartotal' au jeu de données, représentant la somme des 'amount' par 'category'. Un second DATA STEP calcule le 'catpct' (pourcentage de chaque 'amount' par rapport au 'bartotal') et formate cette nouvelle variable en pourcentage. Enfin, il configure les options ODS pour la sortie HTML, définit les titres du graphique et utilise PROC SGPLOT pour créer un graphique à barres verticales empilées. Les options clés de SGPLOT incluent 'response=catpct', 'group=series' et 'dataskin=sheen' pour l'effet 3D.
Analyse des données

Type : CREATION_INTERNE


Le jeu de données 'my_data' est entièrement créé au début du script en utilisant la méthode DATALINES. Aucune donnée externe ou de bibliothèque SASHELP n'est utilisée comme source initiale.

1 Bloc de code
MACRO/GLOBAL
Explication :
Définit la variable macro 'name' à 'col6' qui sera utilisée pour nommer le fichier de sortie HTML et l'image. 'filename odsout '.' ' dirige la sortie ODS vers le répertoire de travail actuel.
Copié !
1%let name=col6;
2filename odsout '.';
2 Bloc de code
DATA STEP Data
Explication :
Crée le jeu de données 'my_data' avec les variables CATEGORY, SERIES (caractère) et AMOUNT (numérique) en lisant les données fournies via la déclaration DATALINES.
Copié !
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 Bloc de code
PROC SQL
Explication :
Modifie le jeu de données 'my_data' en lui ajoutant une nouvelle colonne 'bartotal'. Cette colonne contient la somme de 'amount' pour chaque 'category', calculée via une agrégation SQL.
Copié !
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 Bloc de code
DATA STEP
Explication :
Un second DATA STEP qui lit le jeu de données 'my_data', calcule le pourcentage 'catpct' de 'amount' par rapport au 'bartotal' pour chaque observation, et applique un format de pourcentage à cette nouvelle variable.
Copié !
1DATA my_data; SET my_data;
2FORMAT catpct percent6.0;
3catpct=amount/bartotal;
4RUN;
5 Bloc de code
ODS/OPTIONS
Explication :
Ferme la sortie LISTING par défaut. Ouvre une destination ODS HTML, spécifiant le chemin de sortie, le nom du fichier ('col6.htm'), un titre pour la page HTML et un style 'htmlblue'. Configure ensuite les options graphiques ODS pour générer des images PNG avec une taille spécifique, sans bordure et avec une image map. Enfin, définit deux titres pour le graphique avec des propriétés de couleur, de taille et de style.
Copié !
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 Bloc de code
PROC SGPLOT
Explication :
Utilise la PROC SGPLOT pour créer un graphique à barres empilées. Les barres sont définies par 'category' et empilées par 'series', avec 'catpct' comme variable de réponse. L'option 'dataskin=sheen' ajoute un effet 3D. Le style, les couleurs, les étiquettes et les attributs des axes sont configurés pour améliorer l'apparence du graphique. Après l'exécution, la destination ODS HTML est fermée et la sortie LISTING est rouverte.
Copié !
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;
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.