Publié le :
Reporting CREATION_INTERNE

Visualisation des Ventes avec Marqueurs d'Images Personnalisés

Ce code est également disponible en : Deutsch English Español
En attente de validation
Ce script crée un jeu de données 'sales' contenant des performances de vente par genre. Il utilise ensuite la procédure SGPLOT pour visualiser ces données. La particularité réside dans l'utilisation de l'instruction SYMBOLIMAGE pour associer des images externes (fichiers PNG locaux) à des valeurs de statut ('Bad', 'Good', 'Great'), créant ainsi une mise en évidence visuelle conditionnelle. Le script génère deux versions du graphique, la seconde ajoutant une logique de 'ruban' supplémentaire.
Analyse des données

Type : CREATION_INTERNE


Les données sont créées manuellement via l'instruction DATALINES dans l'étape DATA. Note : Le script fait référence à des chemins d'images Windows (C:\) qui devront être adaptés pour un environnement SAS Viya (Linux).

1 Bloc de code
ODS
Explication :
Configuration de la sortie ODS (Output Delivery System) pour définir le chemin de sortie des graphiques et la résolution (DPI).
Copié !
1%let gpath='.';
2%let dpi=200;
3ods html close;
4ods listing gpath=&gpath image_dpi=&dpi;
2 Bloc de code
DATA STEP Data
Explication :
Création de la table 'sales'. Calcul de variables conditionnelles (Status, Ribbon) et de positions pour les marqueurs graphiques (ys, yr) basés sur le volume des ventes.
Copié !
1DATA sales;
2 LENGTH STATUS $5 Ribbon $3;
3 INPUT Name $ Gender $ Sales;
4 
5 STATUS='Bad';
6 IF sales > 50 THEN STATUS='Good';
7 IF sales >= 100 THEN STATUS='Great';
8 
9 Ribbon=ifc(sales > 110, 'Yes', '');
10 
11 ys=sales-10;
12 IF ribbon='Yes' THEN yr=sales-35;
13 
14 DATALINES;
15Pat Female 100
16Bob Male 76
17Cody Male 50
18Sue Female 120
19Val Female 70
20;
21RUN;
3 Bloc de code
PROC PRINT
Explication :
Affichage simple du jeu de données créé pour vérification.
Copié !
1PROC PRINT;RUN;
4 Bloc de code
PROC SGPLOT
Explication :
Création du premier graphique combiné. Utilise VBARPARM pour les barres et SCATTER pour placer les images définies par SYMBOLIMAGE en fonction du statut.
Copié !
1ods graphics / reset attrpriority=none width=5in height=3in imagename='Conditional';
2title 'Sales and Status by Sales Person';
3PROC SGPLOT DATA=sales;
4 symbolimage name=bad image="C:\Sad_Tran.png" / scale=1;
5 symbolimage name=good image="C:\Happy_Tran.png" / scale=1;
6 symbolimage name=great image="C:\VeryHappy_Tran.png" / scale=1;
7 styleattrs datasymbols=(great good bad) datacolors=(pink cx4f5faf);
8 
9 vbarparm category=name response=sales / group=gender dataskin=gloss
10 filltype=gradient groupdisplay=cluster;
11 scatter x=name y=ys / group=STATUS markerattrs=(size=30);
12 yaxis offsetmin=0 offsetmax=0 grid;
13 xaxis display=(nolabel) offsetmin=0.1 offsetmax=0.1;
14RUN;
5 Bloc de code
PROC SGPLOT
Explication :
Création du second graphique. Ajoute une couche supplémentaire pour afficher un ruban (image 'rib') pour les meilleures ventes, en plus des émoticônes de statut.
Copié !
1ods graphics / reset attrpriority=none width=5in height=3in imagename='Conditional2';
2title 'Sales and Status by Sales Person';
3PROC SGPLOT DATA=sales;
4 symbolimage name=bad image="C:\Sad_Tran.png";
5 symbolimage name=good image="C:\Happy_Tran.png";
6 symbolimage name=great image="C:\VeryHappy_Tran.png";
7 symbolimage name=rib image="C:\Blue_Ribbon_Tran.png" / rotate=20;
8 styleattrs datasymbols=(great good bad rib) datacolors=(pink cx4f5faf);
9 
10 vbarparm category=name response=sales / fillattrs=(color=white);
11 vbarparm category=name response=sales / group=gender dataskin=gloss
12 filltype=gradient groupdisplay=cluster;
13 scatter x=name y=ys / group=STATUS markerattrs=(size=30);
14 scatter x=name y=yr / markerattrs=graphdata4(size=75) discreteoffset=0.25;
15 yaxis offsetmin=0 offsetmax=0 grid;
16 xaxis display=(nolabel) offsetmin=0.1 offsetmax=0.1;
17RUN;
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.
Informations de Copyright : http://blogs.sas.com/content/graphicallyspeaking/2015/04/12/conditional-highlighting-2/