Pratique de Sas Windows ...9.3 Volume 2 - Ined
Pratique de Sas Windows ...9.3 Volume 2 - Ined
Pratique de Sas Windows ...9.3 Volume 2 - Ined
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
[ Suspendons ici le déroulement du co<strong>de</strong> pour le commenter :<br />
Juste après le begingraph et hors tout layout, je définis sous un nom (name=) choisi (ici symbols ), mes<br />
marqueurs graphiques avec leur valeur et apparence/attributs dans un bloc discreteattrmap/<br />
enddiscreteattrmap.<br />
Je les lie dans une instruction discreteattrvar dans un regroupement/assemblage <strong>de</strong> type groupmarkers avec la<br />
variable (var=vp) <strong>de</strong> notre table, en construisant ce lien par l’option attrmap= suivi du nom choisi plus haut<br />
(symbols).<br />
J’utiliserai ce nom groupmarkers plus loin dans l’instruction scatterplot justement en définition <strong>de</strong> group=.<br />
Les legenditem créent par ailleurs les items (chacun nommé différemment) correspondants pour une future<br />
légen<strong>de</strong>.<br />
Ils sont utilisés dans une instruction discretelegend, habillée d’options.<br />
J’ai eu la fantaisie non obligatoire <strong>de</strong> déplacer l’axe <strong>de</strong>s Y en axe second - à droite - , d’où les options<br />
supplémentaires displaysecondary=, yaxis=y2 ….<br />
Fin et Reprise <strong>de</strong> la suite du co<strong>de</strong> en suspens ]<br />
EntryTitle "Probabilités estimées en %" /;<br />
layout overlay /<br />
xaxisopts=(griddisplay=on Label="en %" TickValueAttrs=(Size=6) type=linear<br />
display=(ticks tickvalues line)<br />
linearopts=( tickvaluelist=( 0 5 10 15 20 25 30 35 40 45 50 )<br />
viewmin=0 viewmax=50) )<br />
yaxisopts=(TickValueAttrs=(Size=6) type=discrete<br />
displaysecondary=(ticks tickvalues line) );<br />
ReferenceLine x=22.7 / clip=true;<br />
SeriesPlot X=ppct Y=mod / break=true Lineattrs=( Pattern=34) NAME="SERIES" yaxis=y2;<br />
ScatterPlot<br />
X=ppct Y=mod / primary=true group=groupmarkers NAME="SCATTER" yaxis=y2;<br />
discretelegend "ns_mk" "s_mk" "p_mk" "r_mk" "status" / displayclipped=true<br />
autoitemsize=true;<br />
endlayout;<br />
endgraph;<br />
end; run;<br />
Il ne reste plus qu’à utiliser une nouvelle fois la proc sgren<strong>de</strong>r qui fera le lien entre la table (grapsan) et le<br />
template (sgseriescatmod) retrouvé, car stocké dans mon catalogue/entrepôt toujours défini par l’instruction<br />
essentielle<br />
ods path (prepend) tpl.modtpl(update);<br />
Contrairement à l’exemple du template sg<strong>de</strong>sign (vu en 3.4.2 point15) et réutilisé également avec un sgren<strong>de</strong>r,<br />
il n’y a pas d’instruction dynamic, car nous n’avons pas créé <strong>de</strong> nouvelles macro-variables utiles pour passer <strong>de</strong>s<br />
arguments.<br />
ods graphics/ height=23cm width=13cm;<br />
proc sgren<strong>de</strong>r data=grapsan template=sgseriescatmod;<br />
run;<br />
166 <strong>Pratique</strong> <strong>de</strong> <strong>Sas</strong> windows ….93 <strong>Volume</strong> 2 et Coll.