sas学习之GTL画图2
关于template画图中的options
数据点:datalabel datalabelposition datalabelattrs
线值: curvelabel curvelabelposition curvelabelattrs
layout
scatterplot
seriesplot
stepplot
bandplot
boxplot
discetelegend
- layout overlay / options:控制画布中的相关参数,比如一个画布中两个图的比例问题等。
xaxisopts = (griddisplay=off/on label = ‘response’):
griddisplay: x轴的网格线是否展示
label :x轴的名字
offsetmin=0:第一个ticks距离x轴的距离
offsetmin:最后一个ticks距离y轴的距离
yaxisopts = (griddisplay=off/on display =(ticks tickvalues)):
griddisplay: y轴的网格线是否展示
display: 坐标轴展示的东西
columns=1:一行中有几张图(即,若有2张图时按时并列放置)
rowweights=(0.9 0.1):两张图的比例问题,第一个参数表示第一张图在画布中的占比,第二个参数表示第二张图在画布中的占比
columndatarange=union:几张图有相同的刻度
display=(ticks tickvalues)
discreteopts=(colorbands=odd)
- scatterplot:散点图(以sashelp.class数据集为例)
scatterplot x=height y =weight / options;
proc template;
define statgraph Fig_4_5_3;
begingraph;
entrytitle 'Spline Fit Plot Mileage by Horsepower';
layout overlay / yaxisopts=(griddisplay=on);
scatterplot x=horsepower y=mpg_city/
group=age datalabel=name name='b'
;
endlayout;
endgraph;
end;
run;
proc sgrender data=sashelp.cars(where=(type='Sedan'))
template=Fig_4_5_3;
run;
group = sex:分组
datalabel = name/age:每个点的展示值
name = ‘a’:给该图命名
- seriesplot:
seriesplot x=date y=val /;
*准备数据集;
data GTL_GS_SeriesGroup;
format Date Date9.;
do i=0 to 334 by 30;
date='01jan2009'd+i;
if mod (i, 30) =0 then freq=1; else freq=0;
Drug='Drug A'; Val = 16+ 3*sin(i/90+0.5) + 1*sin(3*i/90+0.7); output;
Drug='Drug B'; Val = 10+ 3*sin(i/90+0.5) + 1*cos(3*i/90+0.7); output;
Drug='Drug C'; Val = 6+ 3*cos(i/90+0.5) + 1*sin(3*i/90+0.7); output;
end;
run;
proc template;
define statgraph Fig_4_2_2;
dynamic _title;
begingraph / subpixel=on;
entrytitle 'Response by Time by Treatment';
layout overlay / yaxisopts=(griddisplay=on label='Response')
xaxisopts=(griddisplay=on display=(ticks tickvalues));
seriesplot x=date y=val / group=drug curvelabel=drug name = 'a'
display=(markers) smoothconnect=true
lineattrs=(thickness=2);*curvelabel:线的label;
discretelegend 'a' / location=inside title='drug:' halign=right
valign=top;
endlayout;
endgraph;
end;
run;
proc sgrender data=GTL_GS_SeriesGroup template=Fig_4_2_2;
run;
seriesplot x=date y=val / options;
group=drug:按某一变量分组
curvelabel=drug:每条线的名字
display=(markers):每个数据点用圆圈展示出来
markerattrs=(symbol=circlefilled/diamondfilled/starfilled size = 10):数据点的形状
smoothconnect=true/false:线平滑与否
lineattrs=(thickness=2 pattern = dash):线的粗细
- stepplot:
stepplot x=date y=val /;
stepplot x=date y=val / options;
group=drug; lineattrs=(pattern=solid)
errorupper=upper:每个数据点的上限
errorlower=lower:每个数据点的下限
justify=center/left/right:连线的位置以中间/左边/右边数据为准
display=(markers):展示数据点 markerattrs=(symbol=circlefilled):数据点的形状、颜色等
datalabel = val:展示数据点的值
break=true/false:对于缺失数据的处理,true:空白处理;false:不显示数据点,但有线条
curvelabel=drug:每条线的名称(线旁的DrugA等);curvelabelposition=min/max:名称的位置
- bandplot:
bandplot x=date limitupper=upper limitlower=lower;
display=(fill outline):轮廓及填充展示
outlineattrs=(pattern=solid thickness=2)
fillattrs=(transparency=0.5):透明度,1:完全透明;0:完全不透明
datalabelposition=top:数据点值的位置
datalabelattrs=(size=10):数据点值的属性
宏变量的应用
proc template;
define statgraph Fig_4_2_4_1;
dynamic title "都会觉得和";*有宏变量时,设定初始值,可任意设置;
begingraph / subpixel=on;
entrytitle 'Response over Time' title;
layout overlay / yaxisopts=(label='Response')
xaxisopts=(display=(ticks tickvalues));
bandplot x=date limitupper=upper limitlower=lower /
group=drug
/* display=(fill outline)*/
outlineattrs=(pattern=solid thickness=2)
fillattrs=(transparency=0.5) name='a';
discretelegend 'a' / location=inside
halign=right valign=top across=1;
endlayout;
endgraph;
end;
run;
proc sgrender data=GTL_GS_bandGroup template=Fig_4_2_4_1;
dynamic title=" of param 1";* of param &i"可以是一个宏变量,画多组图;
/* dynamic title=;*/
run;
- barchart
barchart x=origin y=mpg_city/;
proc template;
define statgraph Fig_4_3_1;
begingraph;
entrytitle 'Mileage by Origin and Type';
layout overlay / xaxisopts=(display=(ticks tickvalues))
yaxisopts=(griddisplay=on);
barchart x=origin y=mpg_city / group=type
stat=mean
groupdisplay=cluster
dataskin=sheen
barwidth=1 name='a';
discretelegend 'a' / title='Type:' location=outside
valign=bottom halign=center;
endlayout;
endgraph;
end;
run;
proc sgrender data=sashelp.cars
template=Fig_4_3_1;
where type not in ('Hybrid' 'Truck');
run;
stat: 统计方法:若指定response,则有参数FREQ(默认值)、PCT、PROPORTION;若未指定,则有SUM(默认值)、MEAN;
groupdisplay=/cluster:柱状图竖直/水平展示
dataskin=sheen:柱状图的皮肤
display=(label):默认放在右下角
- boxplot
orient=horizontal/ Vertical:水平/竖直放置
groupdisplay=cluster
* 添加参考线;
referenceline y=23 / curvelabel='MPG=23' curvelabellocation=inside;
referenceline x=23 / curvelabel='x=23'curvelabellocation=inside;
dropline x=200 y=30 / label='(200,30)'
dropto=y
lineattrs=(pattern=dash);
- discetelegend:图例相关参数 (具体相关参数见上一篇文章)
discetelegend ‘name1’ ‘name2’ /options;
name1、name2:是图例中要展示的图的名字
sortorder=ASCENDINGFORMATTED/DESCENDINGFORMATTED:图例的排序按升序/降序排列