SAS9.4で追加になった「ODS GRAPHICS の ATTRPRIORITY=オプション」をご紹介します。
この「ATTRPRIORITY=オプション」は、SGプロシジャでの「スタイル属性の組み合わせ方法」を設定することができます。
ていわれても意味不明かもしれないんで、とりあえず例を見てみましょうか。
ATTRPRIORITY=COLOR
ods graphics / attrpriority=color; proc sgplot data=sashelp.class; styleattrs datacontrastcolors=(blue orange) datasymbols=(circlefilled starfilled) ; scatter x=height y=weight / group=sex markerattrs=(size=12pt); run; |
- 変数SEXをグループ変数として、シンボルを分けています。
- 今回は説明しやすくするため、STYLEATTRSステートメントを使って、以下のスタイル属性を明示的に設定しています。
- シンボルカラーを「BLUE」と「ORANGE」
- シンボルを「円」と「星」
このスタイル属性に対して「ATTRPRIORITY=COLOR」は以下のイメージでグループごとの「スタイル属性の組み合わせ」を作ります。
1つ目のグループ「BLUE」と「円」の組み合わせ
2つ目のグループ「ORANGE」と「円」の組み合わせ
3つ目のグループ「BLUE」と「星」の組み合わせ
4つ目のグループ「ORANGE」と「星」の組み合わせ
というようにカラーを循環させて組み合わせていきます。
ATTRPRIORITY=NONE
「ATTRPRIORITY=NONE」は以下のようなイメージです。
1つ目のグループ「BLUE」と「円」の組み合わせ
ods graphics / attrpriority=none; proc sgplot data=sashelp.class; styleattrs datacontrastcolors=(blue orange) datasymbols=(circlefilled starfilled) ; scatter x=height y=weight / group=sex markerattrs=(size=12pt); run; |
「ATTRPRIORITY=NONE」は以下のようなイメージです。
1つ目のグループ「BLUE」と「円」の組み合わせ
2つ目のグループ「ORANGE」と「星」の組み合わせ
というようにすべてのスタイル属性をグループごとに循環させていきます。
- 「ATTRPRIORITY=NONE」とした方が見やすいグラフになりやすい
さきほどの「ATTRPRIORITY=COLOR」の例では、グループごとに「色違いの同じシンボル(円)」がPLOTされているのに対して、「ATTRPRIORITY=NONE」の例では、グループごとに「色もシンボルも異なる」PLOTができるので、当然見やすくなるわけです。
- 「ATTRPRIORITY=COLOR」の方が、組み合わせを多く作れる
記事の最初に示した例では、2つの「シンボル」と2つの「色」をスタイル属性として定義しました。
これに対して「ATTRPRIORITY=COLOR」では4つの組み合わせが作れるのに対して、「ATTRPRIORITY=NONE」では2つしか作れません。
これに対して「ATTRPRIORITY=COLOR」では4つの組み合わせが作れるのに対して、「ATTRPRIORITY=NONE」では2つしか作れません。
なにが言いたいかというと、たとえば以下の例をご覧ください。
ods graphics / attrpriority=none; proc sgplot data=sashelp.class; styleattrs datasymbols=(circlefilled starfilled) datacontrastcolors=(blue orange); scatter x=height y=weight / group=age markerattrs=(size=12pt); run; |
変数AGEをグループ変数として、シンボルを分けていますが、異なるグループにも関わらず、同じシンボルとカラーが割り当てられてしまいました。
これは、スタイル属性が循環して使われるためです。
(たとえばカラー属性だと「BLUE」→「ORANGE」→「BLUE」→「ORANGE」という感じで、設定されている色を使い切ると循環して同じ色が使われる)
(たとえばカラー属性だと「BLUE」→「ORANGE」→「BLUE」→「ORANGE」という感じで、設定されている色を使い切ると循環して同じ色が使われる)
この循環は「ATTRPRIORITY=COLOR / NONE」どちらも起こり得ますが、使える組み合わせが少ないと、こういった不具合を起こしていしまいやすいですね。
0 件のコメント:
コメントを投稿