SAS

GTLでブレークラインを挿入する

グラフの軸のある区間にブレークラインを挿入し、その区間の軸表示を省略したグラフは一見作図がめんどくさそうですが、GTLでは簡単に実施することができます。

作図例

東京都の新型コロナウィルス陽性患者の時間推移を例に出してみます。
まずは普通にプロットします。

proc template; 
define statgraph pat; 
begingraph; 
entrytitle "東京都_新型コロナウイルス陽性患者"; 
   layout overlay;
      seriesplot x=date y=count;
   endlayout;
endgraph;
end;
run;

proc sgrender data=ds2 template=pat;
run;
作図結果

このグラフの3月部分を省略して作図してみます。3月に相当する軸範囲にはブレークラインが挿入されます。

proc template; 
define statgraph pat; 
begingraph / 
   axisbreaksymbol=squiggle axisbreaktype=full;
entrytitle "東京都_新型コロナウイルス陽性患者"; 

layout overlay/ 
   xaxisopts=(
      timeopts=(
         includeranges=('01JAN2020'd-'29FEB2020'd '01APR2020'd-'29JUN2020'd )
      )
   );

   seriesplot x=date y=count; endlayout;
endgraph;
end;
run;

proc sgrender data=ds2 template=pat; 
run;
実行結果

コード説明

begingraphステートメントの設定

BEGINGRAPHステートメントではブレークライン形状や種類を設定します。

AXISBREAKSYMBOLオプション

ブレークラインの形状(BRACKET, NOTCH, SLANTEDLEFT, SLANTEDRIGHT,SPARK, SQUIGGLE, Z)のいずれかを指定します。デフォルトはSQUIGGLE(波線)です。

ブレークラインはほとんどの場合波線を使用すると思いますので、基本的にこの設定は不要だと思います。

AXISBEAKTYPEオプション

FULLまたはAXISを指定します。FULLはブレークラインがプロットエリアまでブレークラインが拡張されます。AXISは軸のみにブレークラインが設定されます。

デフォルトはfullです。

axisbreaksymbolをsquiggle以外に指定した場合はaxisしか使用できないようです。

普通はプロットエリアまでブレークラインを引くと思いますので、この設定もなくても良いかと思います。

axisoptsオプションの設定

ブレークラインによって省略する軸範囲はaxisoptsオプションのINCLUDERANGESオプションにて設定できます。INCLUDERANGESオプションは軸の表示範囲を設定するオプションで、複数の範囲をスペースで区切って指定することができます。範囲外の部分にはブレークラインが挿入されて表示が省略されます。

上のテンプレートではINCLUDERANGESオプションには次のように指定されています。

’01JAN2020’d-’29FEB2020’d ’01APR2020’d-’29JUN2020’d

日付を表す文字列の後ろにdをつけると日付値として解釈されます。1月から2月までと、4月から6月までの期間を軸範囲と設定していますが、この時各範囲の間、すなわち3月の部分は軸は省略されてブレークラインが挿入されます。

ブレークラインは線形軸または時間軸に対して設定できます。そのためaxisoptsオプションのlinearoptsあるいはtimeoptsでのみ設定可能です。