SAS

GTLで凡例を極める(2)axislegendステートメント

軸目盛の名称が長すぎて作図スペースに収まらないことがある場合は、軸目盛の凡例を空きスペースに設置すると見やすくなります。
GTLでは軸目盛の凡例を簡単に作成することができます。

axislegendステートメント

axislegendステートメントは指定した軸の目盛りに関する凡例を作成できます。このステートメントは離散軸の場合のみ使用できます。

使用するには軸設定を必ず離散軸(type=discrete)に設定し、離散軸オプションでtickvaluefitpolicy=extractまたはextractalwaysを指定する必要があります。

tickvaluefitpolicyはの目盛りの表示方法を制御するオプションです。

extractに指定すると、軸目盛が他のオブジェクトと重なってしまったり、表示エリアが狭すぎて正常に表示できないとき軸目盛は目盛の文字列そのものの代わりに識別番号に置き換えて表示します。
extractalwaysに指定すると必ず軸目盛は識別番号に置き換わります。

この識別番号と実際の目盛りの文字列の対応付けを凡例として表示するのがaxislegendです。

使用方法は対象の軸にnameオプションで名前をつけて、axislegendステートメントの引数に指定するだけです。

例えばX軸のaxislegedを表示するには以下のように設定します。

layout overlay / 
   xaxisopts=( type=discrete discreteopts=(tickvaluefitpolicy=extractalways) name="axis_name"); 
   
   axislegend "axis_name"; 

endlayout;

使用例

個別の被験者毎に作図する場合、いずれかの軸に被験者識別番号を指定するはずですが、被験者識別番号が長すぎで表示スペースが確保できない場合があります。その時はaxislegendを使うと便利だと思います。

以下の例では、被験者毎の応答を棒グラフとして表現するときに被験者番号をaxislegendを利用して表示しています。

proc template; 
define statgraph axislegend; 
begingraph; 
layout overlay /
   xaxisopts=( type=discrete discreteopts=(tickvaluefitpolicy=extractalways) name="subject"); 
   
   barchartparm category=usubjid response=response; 
   axislegend "subject"/ 
      location=outside 
      across=1 
      halign=right; 
endlayout; 
endgraph; 
end; 
run; 

proc sgrender data=sample template=axislegend; 
run;
axislegendの使用例

axislegendはX軸に被験者識別番号のような長い文字列の目盛りがある場合に役に立ちます。逆にスイマープロットのようなY軸に被験者識別番号を指定する場合は必要ないと思います。

臨床試験では個々の被験者識別番号をグラフに表示させる必要は基本的にないので、正直このような作図事例が必要なのかといわれると微妙です。またaxislegendを使用しなくても軸目盛の文字列が長すぎる場合の対処方法は他にもあると思います。例えば適切な略語を使用してフットノートに説明を載せる方法でも問題なさそうな気がします。

axislegendはそこまでおすすめできるステートメントというわけではありませんが、使えるとちょっと便利かなという印象です。