- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Im trying to present the Y axis on log base 10 . This is a multipage plot and Y axis keep changing. As per the Code below, I get the following graph. The Y axis appears as 1E0, 1E1 etc. My project needs this to be presented as 1, 10^1, 10^2 etc
%macro grph(byval=,ylbl=,insettxt=);
ods escapechar='^';
ods graphics on / reset=all height=8cm width=22.0cm border=off outputfmt=png ;
/*height=8cm width=22.0cm*/
proc sgplot data=in(where=(paramcd=&byval)) dattrmap=myattr;
series x=visnx y=median /group=studyid lineattrs=(pattern=1) attrid=studyid name="v1";
scatter x=visnx y=median/group=studyid yerrorlower=p25 yerrorupper=p75 markerattrs=(symbol=CircleFilled) attrid=studyid name="v2" ;
xaxis label='Post-Dose Visit' values=(1 4 7 15 25 35 45 65 85 105 125 165 ) valuesdisplay=('D1' 'D2' 'D3' 'Wk1/D7' 'Wk2/D14' 'Wk3' 'Wk4/Mnth1' 'Wk6' 'Wk8' 'Wk10' 'Wk12' 'Wk52/EOS' ) fitpolicy=rotate valuesrotate=diagonal valueattrs=(size=8);
yaxis min=1 label=&ylbl valueattrs=(size=8) TYPE=LOG logvtype=EXPANDED LOGBASE=10;
refline lloq / axis=y lineattrs=(pattern=2 color=grey);
inset &insettxt /position=top;
keylegend "v1" / title="" position=topright location =inside across=1 valueattrs=(size=8) noborder;
run;
ods graphics off;
%mend;
%grph(byval="SSSS",ylbl='vg/g',insettxt='Vital shedding');
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Hello @Manj,
You can define a format which displays 10 as "10^1", 100 as "10^2" and so on ...
data fmt;
retain fmtname 'expfmt';
length label $6;
do e=0 to 15;
start=10**e;
if e=0 then label='1';
else label=cats('10^',e);
output;
end;
run;
proc format cntlin=fmt;
run;
... and then add the VALUESFORMAT= option to your YAXIS statement, referring to that format:
valuesformat=expfmt.
An alternative format definition could use superscripts for the exponents (10¹, 10², ...):
proc format;
value supexpfmt
1='1'
1e1="10(*ESC*){unicode '00B9'x}"
1e2="10(*ESC*){unicode '00B2'x}"
1e3="10(*ESC*){unicode '00B3'x}"
1e4="10(*ESC*){unicode '2074'x}"
1e5="10(*ESC*){unicode '2075'x}"
1e6="10(*ESC*){unicode '2076'x}"
1e7="10(*ESC*){unicode '2077'x}"
1e8="10(*ESC*){unicode '2078'x}"
1e9="10(*ESC*){unicode '2079'x}"
1e10="10(*ESC*){unicode '00B9'x}(*ESC*){unicode '2070'x}"
1e11="10(*ESC*){unicode '00B9'x}(*ESC*){unicode '00B9'x}"
1e12="10(*ESC*){unicode '00B9'x}(*ESC*){unicode '00B2'x}"
1e13="10(*ESC*){unicode '00B9'x}(*ESC*){unicode '00B3'x}"
1e14="10(*ESC*){unicode '00B9'x}(*ESC*){unicode '2074'x}"
1e15="10(*ESC*){unicode '00B9'x}(*ESC*){unicode '2075'x}"
;
run;
However, this would require a suitable font:
valueattrs=(size=8 family='Arial Unicode MS') valuesformat=supexpfmt.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Hello @Manj,
You can define a format which displays 10 as "10^1", 100 as "10^2" and so on ...
data fmt;
retain fmtname 'expfmt';
length label $6;
do e=0 to 15;
start=10**e;
if e=0 then label='1';
else label=cats('10^',e);
output;
end;
run;
proc format cntlin=fmt;
run;
... and then add the VALUESFORMAT= option to your YAXIS statement, referring to that format:
valuesformat=expfmt.
An alternative format definition could use superscripts for the exponents (10¹, 10², ...):
proc format;
value supexpfmt
1='1'
1e1="10(*ESC*){unicode '00B9'x}"
1e2="10(*ESC*){unicode '00B2'x}"
1e3="10(*ESC*){unicode '00B3'x}"
1e4="10(*ESC*){unicode '2074'x}"
1e5="10(*ESC*){unicode '2075'x}"
1e6="10(*ESC*){unicode '2076'x}"
1e7="10(*ESC*){unicode '2077'x}"
1e8="10(*ESC*){unicode '2078'x}"
1e9="10(*ESC*){unicode '2079'x}"
1e10="10(*ESC*){unicode '00B9'x}(*ESC*){unicode '2070'x}"
1e11="10(*ESC*){unicode '00B9'x}(*ESC*){unicode '00B9'x}"
1e12="10(*ESC*){unicode '00B9'x}(*ESC*){unicode '00B2'x}"
1e13="10(*ESC*){unicode '00B9'x}(*ESC*){unicode '00B3'x}"
1e14="10(*ESC*){unicode '00B9'x}(*ESC*){unicode '2074'x}"
1e15="10(*ESC*){unicode '00B9'x}(*ESC*){unicode '2075'x}"
;
run;
However, this would require a suitable font:
valueattrs=(size=8 family='Arial Unicode MS') valuesformat=supexpfmt.