2019年11月28日木曜日

[SGPLOT] BY値ごとにグラフを作成する際、軸やシンボルなどをグラフ間で揃えたい






これは SGPLOT をよく使用する方なら一度は困るところではないでしょうか?
まずは、以下の失敗例をご覧ください。



失敗例

/* Sample Data */
proc sort data=sashelp.class (obs=5) out=class;
    by age;
run;

/* BY値ごとにグラフを作成 */
ods graphics / height=400 width=400;

proc sgplot data=class;
    scatter x=height y=weight / group=sex markerattrs=(symbol=circlefilled);
    by age;
run;




「BYステートメント」によって、変数「AGE」の値ごとにグラフを作成しています。
また「GROUP=オプション」によって、変数「SEX」の値ごとにシンボルカラーを変えています。



ここで気になるのが、、

  • X軸とY軸の目盛がグラフ間で異なっている。
  • シンボルの色がグラフ間で異なっている(SEX=Fのシンボルが、AGE=13の時は青、AGE=14の時は赤になっている)



そうなんですよ、、BY値ごとにグラフを作成すると、軸やシンボルはグラフ間で統一してくれません。
でも解決方法は簡単!



成功例

proc sgplot data=class uniform=all;
    scatter x=height y=weight / group=sex markerattrs=(symbol=circlefilled);
    by age;
run;




UNIFORM=オプション」を指定するだけ!
このオプションは「BY値ごとに作成したグラフのどこを統一させたいか」を設定します。
設定値には以下があります。



UNIFORM=

 設定値 設定内容 
SCALEX軸を統一 and Y軸を統一
XSCALEX軸を統一
YSCALEY軸を統一
GROUP「GROUP=オプションに指定した変数の値ごとにシンボルや線種などを統一
XSCALEGROUP「XSCALE」と「GROUP」の両方を設定
YSCALEGROUP「YSCALE」と「GROUP」の両方を設定
ALL上記のすべてを統一



0 件のコメント:

コメントを投稿