24.04.2014 Views

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

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!