/*-----------------------------------------------------------------
S A S S A M P L E L I B R A R Y
NAME: TEMPLEX6
TITLE: Documentation Example 6 for Template Modification
PRODUCT: STAT
SYSTEM: ALL
KEYS: graphics, ods
PROCS:
DATA:
SUPPORT: saswfk UPDATE: July 25, 2011
REF: ods graphics
MISC:
NOTES: This sample provides the DATA step and PROC code
from the chapter "ODS Graphics Template Modification." It
does not provide most of the ODS statements and style
changes that are in the chapter. Rather, this sample
provides code that can be run in one large batch to make
all of the graphs in the chapter. If destinations were
repeatedly opened and closed, as in the chapter, then
output would be lost and rewritten. Note that you should
not specify destination style changes without first
closing a destination. Changing the style of the output
without first closing the destination will not work
as you might expect. Do not do the following:
ODS HTML STYLE=STATISTICAL;
. . . code . . .
ODS HTML STYLE=DEFAULT;
. . . code . . .
ODS HTML STYLE=ANALYSIS;
. . . code . . .
Instead, do the following:
ODS HTML STYLE=STATISTICAL;
. . . code . . .
ODS HTML CLOSE;
ODS HTML STYLE=DEFAULT;
. . . code . . .
ODS HTML CLOSE;
ODS HTML STYLE=ANALYSIS;
. . . code . . .
ODS HTML CLOSE;
Note that several steps are commented out in this sample,
because they create large volumes of output. To run those
steps, remove the comments.
-----------------------------------------------------------------*/
data x;
input x y;
label x = 'Normal(0, 4)' y = 'Normal(0, 1)';
datalines;
-4 0
4 0
0 -2
0 2
;
data y(drop=i);
do i = 1 to 2500;
r1 = normal( 104 );
r2 = normal( 104 ) * 2;
output;
end;
run;
data all;
merge x y;
run;
proc template;
define statgraph Plot;
begingraph;
entrytitle 'Statement Order and the PRIMARY= Option';
layout overlayequated / equatetype=fit;
ellipseparm semimajor=eval(sqrt(4)) semiminor=1
slope=0 xorigin=0 yorigin=0 /
outlineattrs=GraphData2(pattern=solid thickness=5);
ellipseparm semimajor=eval(2 * sqrt(4)) semiminor=2
slope=0 xorigin=0 yorigin=0 /
outlineattrs=GraphData5(pattern=solid thickness=5);
vectorplot y=y x=x xorigin=0 yorigin=0 /
arrowheads=false lineattrs=GraphFit(thickness=5);
scatterplot y=r1 x=r2 /
markerattrs=(symbol=circlefilled size=3);
referenceline x=0 / lineattrs=(thickness=3);
referenceline y=0 / lineattrs=(thickness=3);
endlayout;
endgraph;
end;
run;
*
ods listing style=listing;
proc sgrender data=all template=plot;
run;
proc template;
define statgraph Plot;
begingraph;
entrytitle 'Statement Order and the PRIMARY= Option';
layout overlayequated / equatetype=fit;
referenceline x=0 / lineattrs=(thickness=3);
referenceline y=0 / lineattrs=(thickness=3);
scatterplot y=r1 x=r2 /
markerattrs=(symbol=circlefilled size=3);
vectorplot y=y x=x xorigin=0 yorigin=0 /
arrowheads=false lineattrs=GraphFit(thickness=5);
ellipseparm semimajor=eval(sqrt(4)) semiminor=1
slope=0 xorigin=0 yorigin=0 /
outlineattrs=GraphData2(pattern=solid thickness=5);
ellipseparm semimajor=eval(2 * sqrt(4)) semiminor=2
slope=0 xorigin=0 yorigin=0 /
outlineattrs=GraphData5(pattern=solid thickness=5);
endlayout;
endgraph;
end;
run;
*
ods listing style=listing;
proc sgrender data=all template=plot;
run;
proc template;
define statgraph Plot;
begingraph;
entrytitle 'Statement Order and the PRIMARY= Option';
layout overlayequated / equatetype=fit;
referenceline x=0;
referenceline y=0;
scatterplot y=r1 x=r2 / markerattrs=(symbol=circlefilled size=3);
vectorplot y=y x=x xorigin=0 yorigin=0 / primary=true
arrowheads=false lineattrs=GraphFit;
ellipseparm semimajor=eval(sqrt(4)) semiminor=1
slope=0 xorigin=0 yorigin=0 /
outlineattrs=GraphData2(pattern=solid);
ellipseparm semimajor=eval(2 * sqrt(4)) semiminor=2
slope=0 xorigin=0 yorigin=0 /
outlineattrs=GraphData5(pattern=solid);
endlayout;
endgraph;
end;
run;
*
ods listing style=listing;
proc sgrender data=all template=plot;
run;