最近在作图的时候,看到了别人写的程序,感受颇多,新学了一招,一直以来,我就有一个痛点,关于Y轴的取值,经常每一个图都需要根据数据去自己设置,有点繁琐,一点点恶心。然后其实可以根据程序让他自己做个判断取值,实现程序的通识性。
proc sql;
create table y_tick as
select distinct min(floor(aval)) as ymin, max(ceil(aval)) as ymax
from adis;
quit;
data y_tick;
set y_tick;
do tick=0 to ymax;
output;
end;
run;
proc sort nodupkey;by _all_;run;
proc sql ;
select tick into: yaxis_ticklist separated by ' '
from y_tick;
quit;
%put &yaxis_ticklist;
代码如上,然后原理也比较简单,根据floor函数跟ceil函数把aval里面的最大值与最小值相关整数取出来,然后做一个循环,然后做成一个宏变量yaxis_ticklist。最后一步在GTL语言Y轴的设置里面进行引用宏变量。
linearopts=(tickvalueformat=yaxis. tickvaluelist=(&yaxis_ticklist) tickvaluepriority=true)