Publié le :
Visualisation CREATION_INTERNE

Graphique à barres horizontales empilées à 100% avec SGPLOT

Ce code est également disponible en : Deutsch English Español
En attente de validation
Le script initialise un macro-variable et un fileref pour la sortie ODS. Il crée ensuite le jeu de données `my_data` à partir de données en ligne (`datalines`). Une étape `PROC SQL` est utilisée pour calculer la somme totale (`bartotal`) de `AMOUNT` pour chaque `CATEGORY`. Un deuxième `DATA STEP` calcule le pourcentage (`catpct`) de chaque `AMOUNT` par rapport à son `bartotal` correspondant et applique un format. Les destinations ODS HTML et ODS Graphics sont configurées pour générer un fichier HTML avec le graphique. Enfin, `PROC SGPLOT` est utilisée pour créer un graphique à barres horizontales empilées à 100%, stylisé avec des couleurs personnalisées, un effet 3D ('sheen') et des attributs d'axe spécifiques. L'output est généré dans un fichier HTML et les destinations ODS sont refermées.
Analyse des données

Type : CREATION_INTERNE


Les données source `my_data` sont créées directement dans le script SAS à l'aide de l'instruction `datalines`, permettant une exécution autonome sans dépendances externes.

1 Bloc de code
Déclarations Globales
Explication :
Définit une macro-variable `name` pour le nom de fichier et un fileref `odsout` pointant vers le répertoire courant pour les sorties ODS.
Copié !
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 Bloc de code
DATA STEP Data
Explication :
Crée un jeu de données SAS nommé `my_data` en utilisant des données fournies en ligne via l'instruction `datalines`, avec les variables `CATEGORY`, `SERIES` (caractère) et `AMOUNT`.
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 Data
Explication :
Utilise `PROC SQL` pour modifier le jeu de données `my_data`. Il recalcule `my_data` en ajoutant une nouvelle colonne `bartotal`, qui est la somme de `AMOUNT` pour chaque `CATEGORY`. La clause `GROUP BY` assure que `bartotal` est calculé par catégorie.
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 Data
Explication :
Un deuxième `DATA STEP` lit le jeu de données `my_data` (modifié par `PROC SQL`) et calcule une nouvelle variable `catpct` représentant le pourcentage de `AMOUNT` par rapport à `bartotal`. Un format `percent6.0` est appliqué à `catpct`.
Copié !
1DATA my_data; SET my_data;
2FORMAT catpct percent6.0;
3catpct=amount/bartotal;
4RUN;
5 Bloc de code
ODS HTML
Explication :
Ferme la destination ODS LISTING. Ouvre la destination ODS HTML, spécifie le fichier de sortie HTML (`bar6.htm`), le titre de la page et le style `htmlblue`. Configure `ODS GRAPHICS` pour l'exportation d'images PNG avec des dimensions spécifiques, et définit deux titres pour le graphique.
Copié !
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 imagemap;
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 Bloc de code
PROC SGPLOT
Explication :
Génère un graphique à barres horizontales empilées à 100% à l'aide de `PROC SGPLOT`. Le jeu de données `my_data` est utilisé. L'option `hbar` crée les barres, `response=catpct` indique la variable à représenter, `stat=sum` aggrège les valeurs, et `group=series` empile les barres par `SERIES`. `dataskin=sheen` applique un effet visuel 3D. Les axes X et Y sont configurés avec des attributs de style et d'affichage personnalisés.
Copié !
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 Bloc de code
ODS HTML
Explication :
Termine l'exécution des procédures (`quit`). Ferme la destination ODS HTML et réactive la destination ODS LISTING.
Copié !
1QUIT;
2ODS HTML CLOSE;
3ODS 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.