Hi, I would like to add arrows to show "improved/worsened" in the waterfall plot output like the screenshot below. The separation point of the red/green arrows is based on the y-axis line 0.0. I can use annotation to get it shown from PROC SGPLOT on the first page (the SAS code is provided). However, because the program will generate multiple pages, each page represents a different item with different y-axis range. The position of 0.0 line on each page will change/shift, therefore a fixed position of the arrows (from the annotation below) won't work. Would you please provide some suggestions/solutions on this issue to help me get this resolved? Many thanks. (or is there a way to display these red/green arrows inside the plot and does not mess up the plot itself?) data anno1; length textcolor $40; drawspace ="GRAPHPERCENT"; function="text"; ANCHOR= "TOP"; rotate=90; label = 'Worsened'; x1=98; y1=70; textcolor ="RED"; output; x1=98; y1=88; label = 'Improved'; textcolor ="GREEN"; output; run; data anno2; drawspace ="GRAPHPERCENT"; function ='ARROW'; SHAPE='FILLED'; direction='IN'; linethickness = 6; widthunit ="pixel"; linecolor = "red"; x1=97; x2=97; y1=62; y2=78; output; linecolor = "lightgreen"; y1=98; y2=82; output; run; data anno; length function $20; set anno1 anno2; run; %do k = 1 %to %sysfunc(countw(&Al,|)); %do i = 1 %to %sysfunc(countw(&Bl,|)); %do j = 1 %to %sysfunc(countw(&Cl,|)); data ingraph; set gdata; if A="%qscan(%superq(Al),&k,|)" and B=%qscan(%superq(Bl),&i,|) and C=%qscan(%superq(Cl),&j,|); run; ... ... proc sgplot data=ingraph dattrmap=attribap sganno=anno noautolegend; by visit; vbar Position / group=xxx attrid=ID1 response=yyy barwidth=0.3; refline 0 / axis=y lineattrs=(pattern=shortdash); xaxis label="ID" VALUESROTATE=VERTICAL fitpolicy=rotate; yaxis label="Change for &B" offsetmax=0.025 offsetmin=.025 values=(&miny. to &maxy. by &inc.); legenditem type=markerline name='item1' / lineattrs=(pattern=Solid color=CX0085B2) markerattrs=(symbol=squarefilled color=CX0085B2); legenditem type=markerline name='item2' / lineattrs=(pattern=Solid color=CX808080) markerattrs=(symbol=squarefilled color=CX808080); keylegend 'item1' 'item2' / noborder; run; ...
... View more