「Attribute Map Statement」を利用して、GTLでマーカーや線などの属性を定義する方法を紹介。
と、その前に、以前「Attribute Map Dataset」を紹介しました。
グラフのマーカーや線などの属性をGROUP毎に設定する【Attribute Map Dataset 編】
今回はもう1つの方法として「Attribute Map Statement」を紹介していきます。
(※Attribute Map StatementはGTLのみの機能となります)
さっそくサンプルプログラム
上の例では以下のような設定をしています。
- 年齢(AGE)をグループ変数として、マーカーの種類と色を以下に設定
- AGEが「11」「12」の時、青色の星マーク
- AGEが「13」「14」の時、黄色の三角マーク
- AGEが上記以外の時、赤色の丸マーク
ではどのように設定しているか見ていきましょう。
まずは、グループ変数の値にどういった書式(属性)を割り当てるのか?を定義します。
DISCRETEATTRMAP NAME="Attribute Mapの名前"; VALUE "グループ変数の値1" / 属性; VALUE "グループ変数の値2" / 属性; … ENDDISCRETEATTRMAP; |
今回は以下のように書いています。
discreteattrmap name="mymap"; value "11" "12" / markerattrs=(color=blue symbol=starFilled size=11); value "13" "14" / markerattrs=(color=yellow symbol=TriangleFilled size=11); value other / markerattrs=(color=red symbol=CircleFilled size=11); enddiscreteattrmap; |
- 「mymap」というAttribute Map を定義
- グループ変数の値が「11」「12」の時、青色の星マーク
- グループ変数の値が「13」「14」の時、黄色の三角マーク
- グループ変数の値が上記以外の時、赤色の丸マーク
ちなみに属性には「マーカー」や「塗りつぶし」といった設定を行う以下の属性オプションが用意されています(GTL書いたことある人ならお馴染みの書き方)
- MARKERATTRS=()
- FILLATTRS=()
- LINEATTRS=()
- TEXTATTRS=()
重要ポイント
グループにする変数にFORMATが割り当てられている場合、FORMATを当てた後の値を指定する事。
例えば年齢をグループ変数とする場合、11 = "11歳" のようにFORMATが当てられている場合、"11歳" の方を指定する。
discreteattrmap name="mymap"; value "11歳" / markerattrs=(color=blue symbol=starFilled size=11); enddiscreteattrmap; |
次に、先ほど定義した「Attribute Map」と「実際のグループ変数」を関連付けます。
DISCRETEATTRVAR VAR = グループ変数 ATTRVMAP = "グループ変数と関連付けるAttribute Map" ATTRVAR = グループ変数とAttribute Mapの関連付けに対して、任意の名前を定義 ; |
今回は以下のように書いています。
discreteattrvar var=age attrmap="mymap" attrvar=myvar ; |
「グループ変数=AGE」と「Attribute Map="mymap"」を「myvar」という名前(Attribute変数)で関連付けています。
あとはPLOTするときに、グループ変数として「Attribute変数」を指定すればOK
scatterplot x=HEIGHT y=WEIGHT / group=myvar grouporder=ascending ; |
これで、Attribute Mapの定義に基づいてマーカーの種類や色などの属性を展開してPLOTしてくれます。
注意:
SAS9.4M3より前のバージョンでは、この機能 (Attribute Map Statement) と一緒に、PLOTステートメント (SCATTERPLOTやSERIESPLOTなど) でも属性を定義している場合、結果のプロット部分と凡例部分の属性が一致していないおかしな状態になってしまうことがある?らしいので注意。
0 件のコメント:
コメントを投稿