- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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 ?
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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.