%let gpath='C:\'; %let dpi=200; ods html close; ods listing gpath=&gpath image_dpi=&dpi; data swimmer; input item stage $4-12 low high highcap $25-40 status $40-60 start end durable; startline=start; endline=end; if status ne ' ' then do; if end eq . then endline=high-0.3; if start eq . then startline=low+0.3; end; if stage eq ' ' then durable=.; ymin=-1; datalines; 1 Stage 1 0 18.5 FilledArrow Complete response 6.5 13.5 -0.25 2 Stage 2 0 17.0 Complete response 10.5 17.0 -0.25 3 Stage 3 0 14.0 FilledArrow Partial response 2.5 3.5 -0.25 3 0 14.0 FilledArrow Partial response 6.0 . -0.25 4 Stage 4 0 13.5 FilledArrow Partial response 7.0 11.0 . 4 0 13.5 FilledArrow Partial response 11.5 . . 5 Stage 1 0 12.5 FilledArrow Complete response 3.5 4.5 -0.25 5 0 12.5 FilledArrow Complete response 6.5 8.5 -0.25 5 0 12.5 FilledArrow Partial response 10.5 . -0.25 6 Stage 2 0 12.6 FilledArrow Partial response 2.5 7.0 . 6 0 12.6 FilledArrow Partial response 9.5 . . 7 Stage 3 0 11.5 Complete response 4.5 11.5 -0.25 8 Stage 1 0 9.5 Complete response 1.0 9.5 -0.25 9 Stage 4 0 8.3 Partial response 6.0 . . 10 Stage 2 0 4.2 FilledArrow Complete response 1.2 . . ; run; ods html; proc print;run; ods html close; data attrmap; length ID $ 9 linecolor markercolor $ 20; input id $ value $10-30 linecolor $ markercolor; datalines; status Complete response darkred darkred status Partial response blue blue ; run; proc print;run; ods graphics on / reset height=3.5in width=6in imagename='Swimmer_93'; footnote J=l h=0.8 'Each bar represents one subject in the study. Right arrow cap indicates continued response.'; footnote2 J=l h=0.8 'A durable responder is a subject who has confirmed response for at least 183 days (6 months).'; proc sgplot data= swimmer dattrmap=attrmap nocycleattrs; highlow y=item low=low high=high / highcap=highcap type=bar group=stage fill nooutline lineattrs=(color=black) name='stage' barwidth=1 nomissinggroup transparency=0.3; highlow y=item low=startline high=endline / group=status lineattrs=(thickness=2 pattern=solid) name='status' nomissinggroup attrid=status; scatter y=item x=start / markerattrs=(symbol=trianglefilled size=8 color=darkgray) name='s' legendlabel='Response start'; scatter y=item x=end / markerattrs=(symbol=circlefilled size=8 color=darkgray) name='e' legendlabel='Response end'; scatter y=item x=durable / markerattrs=(symbol=squarefilled size=6 color=black) name='d' legendlabel='Durable responder'; scatter y=item x=start / markerattrs=(symbol=trianglefilled size=8) group=status attrid=status; scatter y=item x=end / markerattrs=(symbol=circlefilled size=8) group=status attrid=status; xaxis label='Months' values=(0 to 20 by 1) valueshint; yaxis reverse display=(noticks novalues noline) label='Subjects Received Study Drug'; keylegend 'stage' / title='Disease Stage'; keylegend 'status' 's' 'e' 'd' / noborder location=inside position=bottomright across=1; run; footnote; ods graphics on / reset height=3.5in width=6in imagename='Swimmer2_93'; footnote J=l h=0.8 'Each bar represents one subject in the study.'; footnote2 J=l h=0.8 'A durable responder is a subject who has confirmed response for at least 183 days (6 months).'; proc sgplot data= swimmer dattrmap=attrmap nocycleattrs; highlow y=item low=low high=high / highcap=highcap type=bar group=stage fill nooutline lineattrs=(color=black) name='stage' barwidth=1 nomissinggroup transparency=0.3; highlow y=item low=startline high=endline / group=status lineattrs=(thickness=2 pattern=solid) name='status' nomissinggroup attrid=status; scatter y=item x=start / markerattrs=(symbol=trianglefilled size=8 color=darkgray) name='s' legendlabel='Response start'; scatter y=item x=end / markerattrs=(symbol=circlefilled size=8 color=darkgray) name='e' legendlabel='Response end'; scatter y=ymin x=low / markerattrs=(symbol=trianglerightfilled size=14 color=darkgray) name='x' legendlabel='Continued response '; scatter y=item x=durable / markerattrs=(symbol=squarefilled size=6 color=black) name='d' legendlabel='Durable responder'; scatter y=item x=start / markerattrs=(symbol=trianglefilled size=8) group=status attrid=status; scatter y=item x=end / markerattrs=(symbol=circlefilled size=8) group=status attrid=status; xaxis label='Months' values=(0 to 20 by 1) valueshint; yaxis reverse display=(noticks novalues noline) label='Subjects Received Study Drug' min=1; keylegend 'stage' / title='Disease Stage'; keylegend 'status' 'd' 's' 'e' 'x' / noborder location=inside position=bottomright across=1; run; footnote;