2015年7月10日金曜日

Graph Template Language(GTL)入門:基本構文


簡単なグラフであれば、SGPLOTプロシジャなどが使えますが、
デザインをこうしたい、ああしたい、、という場合、カスタマイズしたグラフのテンプレートを作る必要があります。

このテンプレートを作るのが、Graph Template Language(GTL)です。

出来ることが多すぎるので、ざっくり解説したいと思います。
間違ってるところなどがあれば、修正・追記していく予定ですので、ご指摘お願いします。


基本構文

①まずは、TEMPLATEプロシジャでグラフテンプレートを作ります。

PROC TEMPLATE  ;
   DEFINE STATGRAPH テンプレート名  ;
       BEGINGRAPH  ;

               ENTRYTITLE "グラフタイトル" ;
               LAYOUT レイアウト種類  ;
                      プロット文  ;
               ENDLAYOUT ;
               ENTRYFOOTNOTE "フットノート" ;

       ENDGRAPH  ;
   END  ;
RUN ;

  DEFINE STATGRAPH テンプレート名 ;
      ~
  END ;
 作成するテンプレート名を指定。
 適当な名前でok。

  BEGINGRAPH ;
      ~
  ENDGRAPH ;
 お決まりの文。開始と終了を明示。


  ENTRYTITLE "タイトル" ;

 グラフのタイトル

  ENTRYFOOTNOTE "フットノート" ;

 グラフのフットノート

  LAYOUT レイアウト種類 ;
      ~
  ENDLAYOUT ;

 複数のプロットを左右に並べたり、重ねたり、、
 等のレイアウトの種類を選択します。

 (ここは別の機会で紹介予定)


②上で作ったテンプレートを、SGRENDERプロシジャで読み込んで、グラフを作ります。

PROC SGRENDER  DATA=プロットするデータセット  TEMPLATE=テンプレート名 ;
RUN;



簡単な例

* Sample Dataset ;
data DT1;
    input DAY WEIGHT;
    cards;
0  85.5
10 79.5
20 75.2
30 70.5
40 65.8
50 72.1
;

* テンプレートを作成 ;
proc template ;
  define statgraph MYTEMP ;
     begingraph;

          entrytitle "ダイエット記録";
          layout overlay;
               seriesplot x=DAY y=WEIGHT / display=all ;
          endlayout;   

     endgraph;
  end;
run;

* テンプレートを使って、グラフを作成 ;
proc sgrender data=DT1 template=MYTEMP ;
run;




(上記「結果のグラフ出てこないよ」って場合は、なんかしらの設定によって出力がオフになっている可能性あり)


解説

基本構文と照らし合わせると理解しやすいと思います。
ただしプログラム中の以下の部分は、別記事で解説予定なので、詳細は割愛します。

layout overlay;
     seriesplot x=DAY y=WEIGHT / display=all ;
endlayout;  

ざっくりですが、
layout overlayでなんかレイアウトを設定してから、seriesplotステートメントを使って時系列にプロットをしてるって感じです。



GTL入門記事一覧

0 件のコメント:

コメントを投稿