%let gpath=C:\;
%let dpi=200;
ods html close;
ods listing style=HTMLBlue gpath="&gpath" image_dpi=&dpi;
proc format;
value res
0='1.0 mg'
1='2.0 mg'
2='3.0 mg'
3='4.0 mg'
4='3.0 F6 mg'
5='4.0 F6 mg';
run;
/*--Create some data--*/
data tumor;
label Duration='Duration of Treatment' Discontinued='Discontinued';
format Drug res.;
length Code $6;
do i=1 to 20;
Response=100*(ranuni(3)-0.7);
Duration=50*ranuni(3);
Discontinued=.;
if ranuni(3) > 0.8 then Discontinued=duration-5;
Drug=floor(6*ranuni(3));
if ranuni(3) > 0.7 then Code='FL';
else Code='DLBCL';
Codeloc=ifn(response > 0, 0, response);
Baseline=20+180*(ranuni(2));
output;
end;
run;
/*--Sort by descending response--*/
proc sort data=tumor out=tumor;
by descending Response;
run;
data tumorsorted;
set tumor;
j=_n_;
run;
ods html;
proc print;run;
ods html close;
/*--Define Attributes map for walls and axes--*/
data attrmap;
length ID $ 9 value $10 fillcolor $ 10 show $8;
id='Resp'; value='1.0 mg'; fillcolor='white'; show='Attrmap'; output;
id='Resp'; value='2.0 mg'; fillcolor='cxffffc0'; show='Attrmap'; output;
id='Resp'; value='3.0 mg'; fillcolor='cxf0d0a0'; show='Attrmap'; output;
id='Resp'; value='4.0 mg'; fillcolor='orange'; show='Attrmap'; output;
id='Resp'; value='3.0 F6 mg'; fillcolor='cxff7f00'; show='Attrmap'; output;
id='Resp'; value='4.0 F6 mg'; fillcolor='red'; show='Attrmap'; output;
run;
/*--WaterFall with Treatment Duration Template--*/
proc template;
define statgraph Waterfall_Duration;
begingraph / axislineextent=data;
entrytitle 'Tumor Response and Duration by Subject Id';
entryfootnote halign=left 'This graph uses simulated data for illustration only' /
textattrs=(size=7pt style=italic);
layout lattice / columndatarange=union rowweights=(0.4 0.6) rowgutter=0;
columnaxes;
columnaxis / display=none discreteopts=(colorbands=odd colorbandsattrs=(transparency=0.2));
endcolumnaxes;
layout overlay / yaxisopts=(griddisplay=on offsetmax=0.15 tickvalueattrs=(size=7) labelattrs=(size=7)) walldisplay=none;
barchartparm category=j response=duration / datalabel=duration
fillattrs=graphdata1 datalabelattrs=(size=5)
dataskin=pressed displaybaseline=auto;
scatterplot x=j y=discontinued / markerattrs=(symbol=diamondfilled size=9)
filledoutlinedmarkers=true markerfillattrs=(color=gold)
markeroutlineattrs=(color=black) name='d' legendlabel='Discontinued';
discretelegend 'd' / location=inside valign=top halign=left valueattrs=(size=7)
border=false autoitemsize=true;
endlayout;
layout overlay / yaxisopts=(griddisplay=on tickvalueattrs=(size=5) labelattrs=(size=7) offsetmax=0
linearopts=(tickvaluepriority=true) label='Change from Baseline (%)')
walldisplay=none;
bandplot x=j limitupper=20 limitlower=-30 / extend=true display=(outline)
outlineattrs=graphdata1(pattern=dash thickness=1);
barchartparm category=j response=response / group=drug groupdisplay=cluster
datalabelattrs=(size=5) dataskin=pressed name='a' datalabelfitpolicy=rotate;
textplot x=j y=codeloc text=code / rotate=90 position=left textattrs=(size=6) contributeoffsets=(ymin);
discretelegend 'a' / location=inside valign=bottom halign=left across=3 opaque=false
valueattrs=(size=5) border=false;
endlayout;
endlayout;
endgraph;
end;
run;
/*--WaterFall with Treatment Duration Graph--*/
ods graphics / reset width=4in height=4in imagename='Waterfall_Duration';
proc sgrender template=Waterfall_Duration data=tumorsorted dattrmap=attrmap;
format duration 3.0;
label baseline='Baseline (mm)';
dattrvar drug="Resp";
run;
/*--WaterFall with Tumor Baseline Template--*/
proc template;
define statgraph Waterfall_Baseline;
begingraph / axislineextent=data;
entrytitle 'Tumor Response and Duration by Subject Id';
entryfootnote halign=left 'This graph uses simulated data for illustration only' /
textattrs=(size=7pt style=italic);
layout lattice / columndatarange=union rowweights=(0.3 0.45 0.25) rowgutter=0;
columnaxes;
columnaxis / display=none discreteopts=(colorbands=odd colorbandsattrs=(transparency=0.2));
endcolumnaxes;
layout overlay / yaxisopts=(griddisplay=on offsetmax=0.15 tickvalueattrs=(size=7) labelattrs=(size=7)) walldisplay=none;
barchartparm category=j response=duration / datalabel=duration
fillattrs=graphdata1 datalabelattrs=(size=5)
dataskin=pressed displaybaseline=auto;
scatterplot x=j y=discontinued / markerattrs=(symbol=diamondfilled size=9)
filledoutlinedmarkers=true markerfillattrs=(color=gold)
markeroutlineattrs=(color=black) name='d' legendlabel='Discontinued';
discretelegend 'd' / location=inside valign=top halign=left valueattrs=(size=7)
border=false autoitemsize=true;
endlayout;
layout overlay / yaxisopts=(griddisplay=on tickvalueattrs=(size=5) labelattrs=(size=7) offsetmax=0
linearopts=(tickvaluepriority=true) label='Change from Baseline (%)')
walldisplay=none;
bandplot x=j limitupper=20 limitlower=-30 / extend=true display=(outline)
outlineattrs=graphdata1(pattern=dash thickness=1);
barchartparm category=j response=response / group=drug groupdisplay=cluster
datalabelattrs=(size=5) dataskin=pressed name='a' datalabelfitpolicy=rotate;
textplot x=j y=codeloc text=code / rotate=90 position=left textattrs=(size=6) contributeoffsets=(ymin);
discretelegend 'a' / location=inside valign=bottom halign=left across=3 opaque=false
valueattrs=(size=5) border=false;
endlayout;
layout overlay / yaxisopts=(griddisplay=on tickvalueattrs=(size=5) labelattrs=(size=7) offsetmin=0
linearopts=(tickvaluepriority=true))
walldisplay=none;
needleplot x=j y=baseline / lineattrs=(color=green pattern=solid thickness=5);
scatterplot x=j y=baseline / markerattrs=(symbol=circlefilled size=9)
filledoutlinedmarkers=true markerfillattrs=(color=white)
markeroutlineattrs=(color=green);
endlayout;
endlayout;
endgraph;
end;
run;
/*--WaterFall with Tumor Baseline Graph--*/
ods graphics / reset width=4in height=4in imagename='Waterfall_Baseline';
proc sgrender template=Waterfall_Baseline data=tumorsorted dattrmap=attrmap;
format duration 3.0;
label baseline='Baseline (mm)';
dattrvar drug="Resp";
run;