SAS学习之GTL画图(1)
关于template参数那些事
以直方图和箱线图为例:
proc template;
define statgraph gt1.dist1;
begingraph;
entrytitle halign=center
' Distribution of Mileage Distribution of Mileage Distribution of Mileage Distribution of Mileage';
entryfootnote halign=left
'Excluding Hybrids';
layout lattice/columns=1
rowweights=(0.8 0.2)
columndatarange = union
columnaxes;
columnaxis /
display =
(tickvalue ticks);
endcolumnaxes
;
; *column = 1两个图位于一列;
layout overlay layout overlay / xaxisopts=
(display=(ticks
tickvalues));
*第一个图;
histogram mpg_city /
binaxis = off; *坐标横轴的间距;
/* binaxis=true BINWIDTH=5;*/*坐标横轴的间距为5;;
densityplot mpg_city;
name = 'Normal'
lineattrs=graphfit2
lineattrs = (pattern = dash);
densityplot mpg_city /
kernel()
name = 'Kernel'
lineattrs = (color = blue PATTERN = solid); *solid:实线 dash:虚线;
*添加图例;
discretelegend 'Normal'
'Kernel'/across = 1
location = inside
halign = right valign = top;*加图例 across:1列,2列 ;
endlayout;
*第二个图;
layout overlay;
boxplot y=mpg_city /
orient=horizontal;
endlayout;
endlayout;
endgraph;
end;
run;
proc sgrender
data=sashelp.cars
template=gt1.dist1;
where type ne 'Hybrid';
run;
layout:
-
columnaxes:两个图共用一个横坐标轴
-
display = (tickvalue ticks)/(ticks)/(tickwsvalue)/standard/none:
ticks:表示坐标轴的那个小竖杠,ticksvalue:表示轴上的值
(tickvalue ticks):两个都展示
(ticks)/(tickwsvalue):只展示小竖杠/轴上的值
none:都不展示 -
columndatarange = union:两个图(直方图和箱线图)有相同的轴间距
这是使用columndatarange的结果
这是未使用columndatarange的结果
-
histogram:画直方图 mpg_city: 依据变量
name与密度的名字不同不会展示在图例中,直方图要想设置展示在图例中的名字,需用label -
desityplot:画密度曲线图
name:曲线的名字,为添加该图例做准备
kernel():表示画密度曲线,若无kernel(),则是正态密度图 binaxis :坐标横轴的间距
lineattrs:可以设置曲线的颜色(color)、虚实(pattern)等 -
discretelegend:添加图例
across=n 一行放置n个图例 n>=1
location = inside/outside :图例位置在图里面还是外面
halign = right/left:图例的水平位置 当location = inside时可以写数字 取值范围 (0,1)
valign = top/bottom/middle:图例的竖直位置
title = ‘name:’:图例的名字,即可填写你要展示分组变量的变量名 -
rowweights=(0.8 0.2) :控制两张图占比,第一张图占比80%,第二张占比20%;
-
entrytitle:给图添加表题
-
entryfootnote:给图添加脚注 halign:可以控制其位置
-
backgroundcolor=cxd5d9d2:设置图背景颜色
-
boxplot:
orient=horizontal/vertical:控制箱线图的放置方向 水平放置or竖直放置