I am doing an template for an AE dotplot for clinical trials. The text string for a preferred term is shown on the y axis. Often the text string is very long why I want have a line break so the term will be on two lines (the y axis tick mark label). I have tried to get force a line shift in the text string by setting in the unicode for a line break - (*ESC*){unicode '000a'x} - but that does not work.
I am doing the plot in GTL
proc template;
define statgraph aedotplot;
begingraph ;
layout lattice /columns=5
columnweights = (0.4 0.1 0.1 0.2 0.2)
rowdatarange=unionall
columngutter=0
;
layout overlay / walldisplay=none
border=false
x2axisopts=(display=(tickvalues )
displaysecondary=(line))
yaxisopts=(linearopts=(tickvaluesequence=(start=1 end=&count increment=1))
display=none
displaysecondary=none
);
/*--Draw alternating bands using referenceline--*/
referenceline y = display2nd/ lineattrs=(thickness=&RefThickness.PCT) datatransparency=0.9;
/* left colum with text box */
scatterplot y=display x=display_label / markercharacter=display MARKERCHARACTERPOSITION=right yaxis=Y xaxis=X2 markerattrs=(size=0) includemissinggroup=true;
endlayout;
......
Any ideas ?
Thanks for the suggestion Rick.
However, can't get it to work....... Is it like this you would suggest (don't mind the plot - give no meaning what so ever ! - should give a tick label with two line with the name of students).:
proc template;
define statgraph plot;
begingraph ;
layout overlay / YAXISOPTS = (LABELFITPOLICY=SPLIT
labelsplitchar="|" )
;
scatterplot y=name2 x=age;
endlayout;
Endgraph;
end;
run;
data class2;
set sashelp.class;
name2=name||"|"||name;
run;
proc sgrender data=class2 template=plot;
run;
Try adding LABELFITPOLICY=SPLIT iIn the YAXISOPTS=(...) list of options.
And instead of unicode, define
labelsplitchar=";"
(or some other character) and imbed the split character into the labels.
Thanks for the suggestion Rick.
However, can't get it to work....... Is it like this you would suggest (don't mind the plot - give no meaning what so ever ! - should give a tick label with two line with the name of students).:
proc template;
define statgraph plot;
begingraph ;
layout overlay / YAXISOPTS = (LABELFITPOLICY=SPLIT
labelsplitchar="|" )
;
scatterplot y=name2 x=age;
endlayout;
Endgraph;
end;
run;
data class2;
set sashelp.class;
name2=name||"|"||name;
run;
proc sgrender data=class2 template=plot;
run;
Try
template;
define statgraph plot;
begingraph ;
layout overlay / YAXISOPTS = (discreteopts =( tickvaluefitpolicy=splitalways
tickvaluesplitchar="|"
)
)
;
scatterplot y=name2 x=age;
endlayout;
Endgraph;
end;
run;
Make sure your graph has enough vertical space for all the split lines.
LABEL policies are for the thing like "Student name" that describes the axis as a whole. TICKVALUE policies affect the tick value text appearance.
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.