2016年12月27日火曜日

Graph Template Language(GTL)入門:軸の設定



GTLでX軸とY軸を設定する方法をまとめました。

ここでは「LAYOUT OVERLAY」内で軸を設定する方法を紹介します。
(LAYOUTステートメントの種類によって設定が異なる)



まず以下のように軸の場所によってオプションの名前が決まっています。





構文
PROC TEMPLATE ;
   DEFINE STATGRAPH テンプレート名;
   BEGINGRAPH ;
        LAYOUTステートメント  /  XAXISOPTS  = ( x軸オプション )
                                                    YAXISOPTS  = ( y軸オプション )
                                                    X2AXISOPTS = ( x2軸オプション )
                                                    Y2AXISOPTS = ( y2軸オプション )
                                                    WALLDISPLAY = NONE    /* 未使用の軸を消す */ ;

                    PLOTステートメント    /  XAXIS=X または X2    YAXIS=Y または Y2;     /* 使用する軸 */

        ENDLAYOUT;
   ENDGRAPH;
   END;
RUN;

PLOTステートメントで、使用する軸を設定できます(デフォルトは「XAXIS=X YAXIS=Y」)



軸オプション  (一部抜粋) 


オプションの組み合わせ・データの性質等で、挙動が変わったり、動作しないことが頻発しがちです。
リファレンスを見ながらトライ&エラーで書いていく感じになります。

設定内容設定( 以下「|」 は構文ではなく「または」の意味で記載)
軸に表示するパーツ

display = line | label | ticks | tickvalues ) | none

(複数指定可。noneの場合だけカッコで囲む必要なし。
このオプションが未指定だと全パーツが表示される)
反対側の軸表示するパーツ

displaysecondary = line | label | ticks | tickvalues )

(複数指定可)
軸ラベル

label = 'ラベル'

(ラベルの文字数が多いとデフォルトでは文字切れを起こす)
軸ラベル位置 

labelposition left | right | top | bottom

(left, rightはx,x2軸のみ、top, bottomはy,y2軸のみ指定可)
軸ラベル書式

labelattrs = (
      family = 'フォント'
      size = サイズ
      color = 
)
目盛の値の書式

tickvalueattrs=(
      family = 'フォント'
      size = サイズ
      color = 
)
グラフ内に目盛線を表示

griddisplay = on
軸を線形軸にする

type = linear
線形軸の設定linearopts (
      viewmin  = 軸の範囲(最小)
      viewmax = 軸の範囲(最大)

      tickvaluesequence = (  ※注意事項あり
                 start = 目盛開始値
                 end   = 目盛終了値
                 increment = 目盛間隔
      )

     
 tickvaluelist = (※注意事項あり  目盛値1 目盛値2 ・・・目盛値リスト )

      tickvaluepriority = true
      ・・・tickvaluelist や tickvaluesequence に指定した目盛の
                 最小・最大を軸に含める(詳細は※こちらを参照)

   
   tickvaluefitpolicy = rotate | rotatealways | stagger など
      ・・・ 目盛の文字が入りきらない時に文字の向き等を変える
             (x,x2,y,y2軸で指定できるオプションの値が異なる)

      
tickvaluerotation = vertical・・・目盛の文字を縦向きに
             (x,x2軸のみ指定可。tickvaluefitpolicyと組み合わせて使用する)
)
軸を離散値にする

type = discrete
離散値の設定discreteopts = (
      tickvaluelist = ( "目盛値1" "目盛値2" ・・・目盛値リスト )
             (注意:このオプションを設定した場合、
                指定しなかった目盛値はデータ部分もグラフから削除される)


      tickvalueformat = 目盛に当てるフォーマット

      tickvaluefitpolicy= rotate | rotatealways | stagger | extract など
      ・・・ 目盛の文字が入りきらない時に文字の向き等を変える
             (x,x2,y,y2軸で指定できるオプションの値が異なる)

 
     tickvaluerotation= vertical ・・・目盛の文字を縦向きに 
             (x,x2軸のみ指定可。tickvaluefitpolicyと組み合わせて使用する)
)



proc template ;
   define statgraph MYGRAPH;
      begingraph;
      layout overlay / walldisplay=none
                              xaxisopts=(labelposition=right griddisplay=on linearopts=(viewmin=10 viewmax=20));

        scatterplot x=AGE y=WEIGHT;
   
      endlayout;
   endgraph;
end;
run;

proc sgrender data=SASHELP.CLASS template=MYGRAPH;
run;



3 件のコメント:

  1. すいません。ブログの設定について教えていただきたいのですが,matsu aさんはSASの構文の背景を変えたり表を挿入されていますよね。これらはどのように設定していらっしゃいますか? HTMLを書いていらっしゃるのでしょうか?

    返信削除
  2. こんにちは。
    おっしゃる通りHTML書いてます。けっこう面倒です笑
    一回書いちゃえばコビーして使えるのでいいんですが。

    返信削除
  3. 仕事でドタバタしていてお返事遅くなりました。
    なるほど。力作なのですね。教えていただきありがとうございました。
    今のままだと,後から見難いのでHTMLも時間があるときに調べてみます。

    返信削除