画图今天也起个头,proc report那些有时间会继续更进。
GTL全称是Graphic Template Language,属于ODS Graphics System的重要组成部分。相比用proc sgplot画图,GTL能实现的功能更多,能定制更多个人属性的东西
基础知识就不多讲了,简单粗暴一点,直接从基础语法讲起。
第一大步:
proc template;
define statgraph template-name;
begingraph / <options>;
<具体代码>
endgraph;
end;
run;
第二大步:
proc sgrender data=data-set-name template=template-name;
<other optional statements>
run;
整个GTL的代码都是在begingraph/endgraph里面实现,你在这里面定制你想画的图是什么样的,它本身是不产生图的,所以我们要通过proc sgrender来渲染输出图形。就这两个步骤,可以说就是GTL的核心了。
我们就通过上面的大框架,画一个简单的直方图,先来感受一下。
产生了一个非常丑陋的直方图,但是没关系,我们后面慢慢修改输出的样式。
先简单讲解一下上面代码涉及的参数
define statgraph sasprograph:声明你画的这个图的模板叫什么名字,这个后面要通过proc sgrender来输出这个模板的样式。
begingraph/endgraph是一一对应的,就跟layout/endlayout一样,要有头有尾。每个template-name应该是有且仅有一个begingraph/endgraph的。
entrytitle:大家不用猜都知道是干什么的。
layout overlay:代表输出一个single cell的图,这个single-cell的图怎么理解呢?我的理解就是你画的图只有一块,而且这一块就是你整个图。大家可以看看multiple-cell的图,就是你的图包含很多小块,如果你要实现下面这样的效果,输出多个小块图,就要用到LAYOUT LATTICE了。
layout怎么理解呢?layout翻译过来就是布局的意思,代表你整幅图怎么放。
histogram就是你具体要画什么图了。histogram height这部分属于GTLPLOT部分。PLOT不存在于GTL 代码中,即没有
begingraph / <options>;
plot XXX *;没有PLOT这四个字
endgraph;
你可以理解成histogram就是PLOT部分。
PLOT部分决定你的数据是怎么放的;LAYOUT部分决定你的数据在哪里展示!
proc template就这些,记得加上endlayout; endgraph; end;接着你就要通过proc sgrender输出图形了,data=XXX就是你要将什么数据集转换成图形。然后后面加上你前面设定好的模板名称。
我觉得开始画图前,了解SAS将图分成哪些区域非常重要,因为后面你要把标签,备注什么的加到图里面,放什么位置要清晰。
以前写的·一篇文章也有涉及到图的几块区域,可以看一下。
SAS画图给图添加注释和标签(SG Annotation Data Sets)
以前写的·一篇文章也有涉及到图的几块区域,可以看一下。