実績値と予測値とかの棒グラフをGTLで作る

以前、[GKPIプロシジャは見た目が楽しくて良いという話]
http://sas-tumesas.blogspot.jp/2014/09/gkpi.html

で、達成度と目標値みたいなプロットをあげました。遊び的な話題として書いたのですが、意外と受けたみたいで、売り上げと予測値の月毎の棒グラフにしたいが、どう書くかみたいなメールをいただいたりしました。

基本的にユーザーの要求に応じて、自由なグラフを書くなら、僕はもう基本的にはGTLを勉強して使うべきだと思います。つまりproc templateでグラフテンプレートを定義して、proc sgrenderでそれを適用するということです。

GTLは9.2では、まだ出はじめということで実際使用していて表現力が足りないなと感じる部分がありますが、9.3以降はannotateも使えますし、きちんとコードを書きさいすれば、基本的に思った通りのものを大体実現できると言っていいでしょう。

GTLは覚えるのは、かなり時間がかかりますが、GTLさえ覚えてしまえば、乱暴な話、sgplotとかsgscatterとかそれぞれのグラフを書くプロシジャなんて全く覚える必要なく、全部GTLでかけます。

内部的には全てGTLで動いてるから当たり前といえば当たり前で、根源的な存在なので、それさえ押さえとけば無敵です。
(ただ、さすがにgkpiプロシジャのスピードメーター表示みたいな特殊なものはGTLでも厳しいかも)

偉そうなこと言いつつ、僕はまだまだ全然ですが。
いつかきちんと勉強して1から解説します(そんなこと言ってばっかですけど)

data Q1;
TIME=1;ACTUAL=100;PREDICT=80;output;
TIME=2;ACTUAL=90;PREDICT=100;output;
TIME=3;ACTUAL=120;PREDICT=100;output;
TIME=4;ACTUAL=120;PREDICT=120;output;
TIME=5;ACTUAL=100;PREDICT=80;output;
run;








TIMEが月とか、日とか、要はX軸にもってくるやつで、ACTUALが実績値で、PREDICTが予測値とか目標値だとして

proc template;
 define statgraph G1;
 begingraph;
 layout overlay;
  barchart X=TIME Y=ACTUAL/target=PREDICT;
 endlayout;
 endgraph;
 end;
run;

proc sgrender data=Q1 template=G1;
run;

ポイントはtarget=です。

で結果は





















こんな感じですね。

提示したのは必要最低限のパターンなので、ここから色つけたり、様々な飾りつけは、GTLを勉強して頑張ってみてください。




0 件のコメント:

コメントを投稿