Publié le :
Reporting CREATION_INTERNE

Graphique de Biorythme avec SAS/GRAPH

Ce code est également disponible en : Deutsch English Español
En attente de validation
Le script prépare l'environnement graphique (GOPTIONS), calcule les variables temporelles relatives à la date du jour et à la date de naissance fournie (via la macro variable &birthdate), génère les données sinusoïdales via une étape DATA, et trace les courbes résultantes à l'aide de PROC GPLOT. Il est conçu pour s'exécuter typiquement comme un SAS© Stored Process (utilisation de _webout).
Analyse des données

Type : CREATION_INTERNE


Les données sont générées algorithmiquement dans l'étape DATA 'mydata' en appliquant des fonctions sinusoïdales basées sur la différence entre la date courante et la date de naissance.

1 Bloc de code
ODS & GOPTIONS
Explication :
Configuration de la sortie ODS HTML (adaptée aux Stored Processes) et définition des paramètres globaux du graphique (taille, polices, couleurs) avec GOPTIONS.
Copié !
1ods listing close;
2ods html body=_webout path=&_tmpcat (url=&_replay) rs=none style=minimal;
3 
4goptions cback=white;
5goptions characters;
6goptions device=png;
7goptions border;
8 
9goptions gunit=pct htitle=5.5 htext=3.5 ctext=gray33 ftitle="albany amt" ftext="albany amt";
10goptions xpixels=700 ypixels=375;
2 Bloc de code
DATA STEP Data
Explication :
Conversion de la date de naissance (texte) en valeur numérique SAS et calcul de la plage de dates d'analyse (aujourd'hui +/- 30 jours). Stockage de ces valeurs dans des macro-variables.
Copié !
1DATA foo;
2bdate="&birthdate"d;
3call symput('bdate',bdate);
4today=today();
5call symput('today',today);
6startdate=today-30;
7enddate=today+30;
8call symput('startdate',startdate);
9call symput('enddate',enddate);
10RUN;
3 Bloc de code
DATA STEP Data
Explication :
Génération des données de biorythme. Pour chaque jour de la période, calcul des valeurs sinusoïdales pour les cycles physique (23 jours), émotionnel (28 jours) et intellectuel (33 jours).
Copié !
1DATA mydata;
2 LENGTH id $15;
3 FORMAT date date9.;
4 FORMAT value percentn7.0;
5 d2r=(atan(1)/45); /* degrees to radians conversion factor */
6 DO Date = &startdate to &enddate BY 1;
7 t=Date-&bdate; /* days since birth */
8 /* similar to value=sin(2*pi * t/23) ... */
9 Value = sin((t/23)*360*d2r); id='Physical'; OUTPUT;
10 Value = sin((t/28)*360*d2r); id='Emotional'; OUTPUT;
11 Value = sin((t/33)*360*d2r); id='Intellectual'; OUTPUT;
12 END;
13RUN;
4 Bloc de code
PROC GPLOT
Explication :
Définition des éléments graphiques (titres, axes, symboles, légende) et création du graphique linéaire des biorythmes avec PROC GPLOT.
Copié !
1title1 "Biorhythm Chart";
2title2 "For someone born &birthdate";
3 
4axis1 label=none order=(-1 to 1 BY .50) value=(color=gray33 h=3.5) minor=none offset=(0,0);
5axis2 label=none order=(&startdate to &enddate BY 30) value=(color=gray33 h=3.5) minor=(number=29) offset=(0,0);
6 
7symbol1 color=red i=join value=none width=2;
8symbol2 color=blue i=join value=none width=2;
9symbol3 color=cx00ff00 i=join value=none width=2;
10 
11legend1 label=none position=(bottom center) across=3;
12 
13PROC GPLOT DATA=mydata;
14plot Value*Date=id /
15 vref=(-.5 0 .5)
16 cvref=(graydd black graydd)
17 href=(&today)
18 chref=(black)
19 vaxis=axis1
20 haxis=axis2
21 legend=legend1
22 cframe=white
23 ;
24RUN;
25QUIT;
5 Bloc de code
ODS CLOSE
Explication :
Fermeture de la destination ODS HTML.
Copié !
1ods html close;
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.
Banner
Le Conseil de l'Expert
Expert
Simon
Expert SAS et fondateur.
« La création d'un graphique de biorythme illustre parfaitement la capacité de SAS à transformer des concepts mathématiques en tableaux de bord visuels dynamiques. La clé ici réside dans la précision du calcul trigonométrique au sein de l'étape DATA : l'utilisation du facteur de conversion d2r (degrés vers radians) permet de projeter les cycles physiques, émotionnels et intellectuels sous forme d'ondes sinusoïdales lissées. Pour un rendu professionnel en mode Web (Stored Process), l'astuce consiste à coupler les GOPTIONS (définition des pixels et de la police Albany AMT) avec des axes rigoureusement formatés (AXIS1 et AXIS2). L'ajout de références horizontales (VREF) et d'une ligne verticale pour la date du jour (HREF) transforme une simple courbe en un véritable outil d'aide à la décision temporelle. »