gplotなりsgplotなりグラフを作る時に、annotateマクロを使用することはあると思います。
数あるannotateマクロの中に、%system(hoge,hoge,hoge);があります。今回はそのお話
前にあげた<http://dengonmemo.blogspot.jp/2016/09/sas_29.html>と関連しています。
私も正しく理解しているかは怪しいところなので、間違っているかもしれませんです。
このマクロはannotateで文字やら線やらをグラフ内に書くときに、書く場所の設定をするマクロです。
そもそもsasで出したグラフには、data Area、Graphics Area、output Areaの3つがあります。
その三つを図で書くとだいたい下記のイメージです。(それぞれの斜線部分がそのAreaに対応)
data area(実際にグラフの値があるエリア)
|-----------------------|
| |-----------------| |
| | | |
| | ↑ ///////////// | |
| | |///////////// | |
| | |///////////// | |
| | |---→ | |
| |---------------- | |
| |
|---------------------- |
Graphics Area(画面全体)
|---------------------|
|/////////////////////////|
|/|-----------------|///|
|/|/////////////////////|///|
|/|/ ↑/////////////////|///|
|/|/|////////////////|///|
|/|/|////////////////|///|
|/|/|---→//|///|
|/|/////////////////////|///|
|/|------------------|///|
|//////////////////////////|
|----------------------|
Output Area(全体からheaderとfooterを除いたところ)
|-----------------------|
| |
| |-------------------| |
| |///////////////////////| |
| |/↑////////////////////| |
| |/|//////////////////| |
| |/|//////////////////| |
| |/|---→////| |
| |///////////////////////| |
| |-------------------| |
| |
|----------------------- |
%systemの引数に1,2を指定するとData Area、3,4でGraphics Area、5,6でoutput Areaに
以降で使用するannotateマクロが出力されるようになります。
また1,3,5を指定すると百分率、2,4,6を指定すると座標で、以降のannotateマクロでの座標が指定できるようになります。
例えば%system(2,2,3)で、グラフのdata Areaの座標でannotateマクロを指定できます。
この下に%line( 1 , 30 , 1 , 28.5 , black, 1 , 0.15 );とすると
[1,30]から[1,28.5]に線を引きます。
%system(1,2,3)と記載した際、第一引数が1なので出力が百分率扱いなので、
この下のannotateマクロの指定で100より大きい値は指定できません。(100%が最大値)
また以下の様に一つのデータステップで複数回%systemは指定できます。
指定のたびに設定が切り替わります。
data anno;
%system(2,2,3);
*-----lineのX,Yは座標で指定できる;
%line(~~);
*-----lineのXは百分率(%)、Yは座標で指定できる;
%system(1,2,2);
%line(~~);
run;
%systemの第三引数は私も良くわかっていないので、今は扱っていません。
どなたか教えていただければ…
こんにちは。
返信削除ANNOTATEマクロ使ったことないのでとても勉強になります!
構文は以下のような感じで、第3引数はサイズ設定に関係しているようですよ。
%system(xsys,ysys,hsys)
以下のp17あたりに書いてありました。
http://www.lexjansen.com/pharmasug/2010/TT/TT02.pdf