畫圖今天也起個(gè)頭闻妓,proc report那些有時(shí)間會(huì)繼續(xù)更進(jìn)滔岳。
GTL全稱是Graphic?Template?Language,屬于ODS?Graphics System的重要組成部分鹏倘。相比用proc?sgplot畫圖雪猪,GTL能實(shí)現(xiàn)的功能更多连锯,能定制更多個(gè)人屬性的東西
基礎(chǔ)知識(shí)就不多講了,簡(jiǎn)單粗暴一點(diǎn)宠默,直接從基礎(chǔ)語法講起麸恍。
第一大步:
proc template;
define statgraph?template-name;
????????begingraph / <options>;
????????????<具體代碼>
????????endgraph;
????end;
run;
第二大步:
proc sgrender?data=data-set-name template=template-name;
????<other optional statements>
run;
整個(gè)GTL的代碼都是在begingraph/endgraph里面實(shí)現(xiàn),你在這里面定制你想畫的圖是什么樣的搀矫,它本身是不產(chǎn)生圖的抹沪,所以我們要通過proc sgrender來渲染輸出圖形刻肄。就這兩個(gè)步驟,可以說就是GTL的核心了采够。
我們就通過上面的大框架肄方,畫一個(gè)簡(jiǎn)單的直方圖冰垄,先來感受一下蹬癌。
產(chǎn)生了一個(gè)非常丑陋的直方圖,但是沒關(guān)系虹茶,我們后面慢慢修改輸出的樣式逝薪。
先簡(jiǎn)單講解一下上面代碼涉及的參數(shù)
define statgraph?sasprograph:聲明你畫的這個(gè)圖的模板叫什么名字,這個(gè)后面要通過proc sgrender來輸出這個(gè)模板的樣式蝴罪。
begingraph/endgraph是一一對(duì)應(yīng)的董济,就跟layout/endlayout一樣,要有頭有尾要门。每個(gè)template-name應(yīng)該是有且僅有一個(gè)begingraph/endgraph的虏肾。
entrytitle:大家不用猜都知道是干什么的。
layout overlay:代表輸出一個(gè)single cell的圖欢搜,這個(gè)single-cell的圖怎么理解呢封豪?我的理解就是你畫的圖只有一塊,而且這一塊就是你整個(gè)圖炒瘟。大家可以看看multiple-cell的圖吹埠,就是你的圖包含很多小塊,如果你要實(shí)現(xiàn)下面這樣的效果疮装,輸出多個(gè)小塊圖缘琅,就要用到LAYOUT LATTICE了。
layout怎么理解呢廓推?layout翻譯過來就是布局的意思刷袍,代表你整幅圖怎么放。
histogram就是你具體要畫什么圖了樊展。histogram?height這部分屬于GTLPLOT部分做个。PLOT不存在于GTL?代碼中,即沒有
begingraph / <options>;
?plot?XXX? ??*;沒有PLOT這四個(gè)字
??endgraph;
你可以理解成histogram就是PLOT部分滚局。
PLOT部分決定你的數(shù)據(jù)是怎么放的居暖;LAYOUT部分決定你的數(shù)據(jù)在哪里展示!
proc template就這些藤肢,記得加上endlayout;?endgraph;?end;接著你就要通過proc sgrender輸出圖形了太闺,data=XXX就是你要將什么數(shù)據(jù)集轉(zhuǎn)換成圖形。然后后面加上你前面設(shè)定好的模板名稱嘁圈。
我覺得開始畫圖前省骂,了解SAS將圖分成哪些區(qū)域非常重要蟀淮,因?yàn)楹竺婺阋褬?biāo)簽,備注什么的加到圖里面钞澳,放什么位置要清晰怠惶。
以前寫的·一篇文章也有涉及到圖的幾塊區(qū)域,可以看一下轧粟。
SAS畫圖給圖添加注釋和標(biāo)簽(SG Annotation Data Sets)
以前寫的·一篇文章也有涉及到圖的幾塊區(qū)域策治,可以看一下。