GREPLAYプロシジャでテンプレートを使用してグラフを表示するとき、グラフがつぶれたようになる

[OS] ALL
[リリース] ALL
[キーワード] GRAPH, GREPLAY, TEMPLATE, VSIZE, HSIZE

[質問]

GREPLAYプロシジャでテンプレートを使用してグラフを表示するとき、グラフがつぶれたようになり、文字も読みにくくなってしまいます。
これを回避することはできますか。

[回答]

GREPLAYプロシジャでテンプレートを使用してグラフを表示するとき、縦と横の比率が元のグラフと大きく異なると、グラフがつぶれたようになる場合があります。

これを回避するには、最初にグラフを作成するときにサイズを調整して、GREPLAYプロシジャで表示するときに縦横の比率が変わらないようにします。

GREPLAYプロシジャを実行する前に、これらのオプションをデフォルトの値に戻します。
グラフのサイズを変更するには、HSIZE、VSIZEグラフィックオプションを使用します。

グラフィック
オプション
調整対象 構文
HSIZE 横のサイズ HSIZE=値<単位>
VSIZE 縦のサイズ VSIZE=値<単位>

例:SASHELP.TEMPLTカタログのV3テンプレートを使用して、3つのグラフを縦に並べる


  /* サンプルデータの作成 */
  data one;
    input @1 player $10. @12 rank @14 position $;
  cards;
  TAYLOR     1 LB
  LAMBERT    2 LB
  SINGLETARY 3 LB
  SMITH      1 RB
  BETTIS     2 RB
  SANDERS    3 RB
  RICE       1 WR
  SHARPE     2 WR
  RISON      3 WR
  ;
  run;

■ 変更前のプログラム


  proc greplay igout=work.gseg nofs; 
    delete _all_; 
  run; 
  quit; 

  goptions reset=all hby=0 nodisplay;

  proc gchart data=one gout=work.gseg;
    vbar player / sumvar=rank;
    by position;
    title1 'This is a graph for #byval(position)';
    pattern1 v=solid c=black;
  run;
  quit;

  goptions display;

  proc greplay nofs igout=work.gseg tc=sashelp.templt template=v3;
    treplay 1:GCHART
            2:GCHART1
            3:GCHART2;
  run;
  quit; 

V3テンプレートを使用してグラフを表示するときは、横の比率は変わらず、縦の比率は1/3になるので、VSIZEオプションの値をデフォルトの1/3にしてグラフを作成します。

  1. GTESTITプロシジャを使って、グラフィックデバイスのHSIZE(横サイズ)、VSIZE(縦サイズ)オプションの値を確認します(DEVICEオプションには、使用するデバイス名を指定してください)。
    
      goptions device=ps nodisplay;
      proc gtestit;
      run;
      quit;
    
    

    GTESTITプロシジャの出力例

    
      背景色 = WHITE
      色 1 = BLACK
      色 2 = GRAY22
      色 3 = GRAY33
      色 4 = GRAY44
      色 5 = GRAY66
      色 6 = GRAY88
      色 7 = GRAYAA
      色 8 = GRAYCC
      縦横比 = 1.33333
      横サイズ =     7.5
      縦サイズ =      10
    
    

  2. VSIZEオプションの値を1/3に設定してグラフを作成します。
    この例ではVSIZEのデフォルト値が10(インチ)ですので、VSIZE=3.3を指定します。
    GREPLAYプロシジャの前で、VSIZEオプションの値をデフォルトに戻します(デフォルトに戻すには、VSIZE=0と指定します)。
    
      proc greplay igout=work.gseg nofs;
        delete _all_;
      run;
      quit;
    
      goptions reset=all hby=0 nodisplay VSIZE=3.3; /* VSIZEに1/3の値を指定 */ 
    
      proc gchart data=one gout=work.gseg;
        vbar player / sumvar=rank;
        by position;
        title1 'This is a graph for #byval(position)';
        pattern1 v=solid c=black;
      run;
      quit;
    
      goptions display;
    
      goptions vsize=0 vpos=0 display;       /* VSIZEの値をデフォルトに戻す */
    
      proc greplay nofs igout=work.gseg tc=sashelp.templt template=v3;
        treplay 1:GCHART
                2:GCHART1
                3:GCHART2;
      run;
      quit;
    
    

    同じ要領で、たとえば、縦横に二分割したL2R2テンプレートを使用する場合は、HSIZE、VSIZEオプションの値をそれぞれ1/2に設定してグラフを作成します。