symbolimageでグラフのシンボルに好きな画像を使う方法。例えば散布図で将棋盤を表現

SAS9.4から、SG系グラフでsymbolimageを使うことができ、プロットのシンボルを自由な画像にすることができます。

印象としては、実装遅くない?って感じですよね。結構大事な機能だと思うので9.2から入れりゃいいのに、、。


で、今回はGTL&SGRENDERで散布図書きます。
で、どうせなら、散布図の概念に捉われない使い方をしたいと思います。

今、以下のようなデータセットがあったとします。

data Q1;
X=1;Y=9;KOMA='▲香車';output;
X=2;Y=9;KOMA='▲桂馬';output;
X=3;Y=9;KOMA='▲銀将';output;
X=4;Y=9;KOMA='▲金将';output;
X=5;Y=9;KOMA='▲王将';output;
X=6;Y=9;KOMA='▲金将';output;
X=7;Y=9;KOMA='▲銀将';output;
X=8;Y=9;KOMA='▲桂馬';output;
X=9;Y=9;KOMA='▲香車';output;
X=2;Y=8;KOMA='▲飛車';output;
X=8;Y=8;KOMA='▲角行';output;
X=1;Y=7;KOMA='▲歩兵';output;
X=2;Y=7;KOMA='▲歩兵';output;
X=3;Y=7;KOMA='▲歩兵';output;
X=4;Y=7;KOMA='▲歩兵';output;
X=5;Y=7;KOMA='▲歩兵';output;
X=6;Y=7;KOMA='▲歩兵';output;
X=7;Y=7;KOMA='▲歩兵';output;
X=8;Y=7;KOMA='▲歩兵';output;
X=9;Y=7;KOMA='▲歩兵';output;
X=1;Y=1;KOMA='△香車';output;
X=2;Y=1;KOMA='△桂馬';output;
X=3;Y=1;KOMA='△銀将';output;
X=4;Y=1;KOMA='△金将';output;
X=5;Y=1;KOMA='△王将';output;
X=6;Y=1;KOMA='△金将';output;
X=7;Y=1;KOMA='△銀将';output;
X=8;Y=1;KOMA='△桂馬';output;
X=9;Y=1;KOMA='△香車';output;
X=8;Y=2;KOMA='△飛車';output;
X=2;Y=2;KOMA='△角行';output;
X=1;Y=3;KOMA='△歩兵';output;
X=2;Y=3;KOMA='△歩兵';output;
X=3;Y=3;KOMA='△歩兵';output;
X=4;Y=3;KOMA='△歩兵';output;
X=5;Y=3;KOMA='△歩兵';output;
X=6;Y=3;KOMA='△歩兵';output;
X=7;Y=3;KOMA='△歩兵';output;
X=8;Y=3;KOMA='△歩兵';output;
X=9;Y=3;KOMA='△歩兵';output;
run;

ちなみに▲は先手を表し、△は後手を表す将棋の符号です。

で、任意のフォルダに、フリー素材画像のサイトから駒の画像をとってきて保存します。
先手と後手で画像の向きがひっくり返りますが、ここは単純に反転した画像を用意して使います。
(使用したサイト:http://sozai.7gates.net/docs/japanese-chess/























でコードは

ods path(prepend) work.templat(update);
proc template;
 define statgraph syogi;
 begingraph;
 symbolimage name=S_OU image='/folders/myfolders/koma/▲王将.png';
 symbolimage name=S_HISYA image='/folders/myfolders/koma/▲飛車.png';
 symbolimage name=S_KAKU image='/folders/myfolders/koma/▲角行.png';
 symbolimage name=S_KINN image='/folders/myfolders/koma/▲金将.png';
 symbolimage name=S_GINN image='/folders/myfolders/koma/▲銀将.png';
 symbolimage name=S_KYOUSYA image='/folders/myfolders/koma/▲香車.png';
 symbolimage name=S_KEIMA image='/folders/myfolders/koma/▲桂馬.png';
 symbolimage name=S_HU image='/folders/myfolders/koma/▲歩兵.png';
 symbolimage name=G_OU image='/folders/myfolders/koma/△王将.png';
 symbolimage name=G_HISYA image='/folders/myfolders/koma/△飛車.png';
 symbolimage name=G_KAKU image='/folders/myfolders/koma/△角行.png';
 symbolimage name=G_KINN image='/folders/myfolders/koma/△金将.png';
 symbolimage name=G_GINN image='/folders/myfolders/koma/△銀将.png';
 symbolimage name=G_KYOUSYA image='/folders/myfolders/koma/△香車.png';
 symbolimage name=G_KEIMA image='/folders/myfolders/koma/△桂馬.png';
 symbolimage name=G_HU image='/folders/myfolders/koma/△歩兵.png';

 discreteattrmap name='kifmap';
   value '▲王将' / markerattrs=(symbol=S_OU);
   value '▲飛車' / markerattrs=(symbol=S_HISYA);
   value '▲角行' / markerattrs=(symbol=S_KAKU);
   value '▲金将' / markerattrs=(symbol=S_KINN);
   value '▲銀将' / markerattrs=(symbol=S_GINN);
   value '▲香車' / markerattrs=(symbol=S_KYOUSYA);
   value '▲桂馬' / markerattrs=(symbol=S_KEIMA);
   value '▲歩兵' / markerattrs=(symbol=S_HU);
   value '△王将' / markerattrs=(symbol=G_OU);
   value '△飛車' / markerattrs=(symbol=G_HISYA);
   value '△角行' / markerattrs=(symbol=G_KAKU);
   value '△金将' / markerattrs=(symbol=G_KINN);
   value '△銀将' / markerattrs=(symbol=G_GINN);
   value '△香車' / markerattrs=(symbol=G_KYOUSYA);
   value '△桂馬' / markerattrs=(symbol=G_KEIMA);
   value '△歩兵' / markerattrs=(symbol=G_HU);
 enddiscreteattrmap;
 discreteattrvar attrvar=KOMAC var=KOMA attrmap='kifmap';

 layout overlay /yaxisopts=(reverse=true griddisplay=ON
                            linearopts=(tickvaluesequence=(start=1 end=9 increment=1)))
                 xaxisopts=(reverse=true  griddisplay=ON
                            linearopts=(tickvaluesequence=(start=1 end=9 increment=1)));
    scatterplot x=X y=Y /group=KOMAC markerattrs=(size=25pt);
 endlayout;
 endgraph;
 end;

proc sgrender template=syogi data=Q1;
run;

結果は

































てな、感じです。まだマス目がうまく表現できてないので、今後の課題ですね。

最後に「新手一生」を掲げられた升田幸三の言葉を2つほど

『文化なんてしょせん無駄なもんなんだ。でもその明かりが、届く範囲の人に何かをもらたしている。将棋も同じじゃないか』

『若い頃、全く生産性のない「将棋指し」という職業に寂莫とした思いをしたことがあります。国家に、国民に、いかほどの貢献をしているだろうかと。でも、文化というものはムダから発展していくのだ、ということを会得してからは「将棋指し」に打ち込めるようになりました。』



0 件のコメント:

コメントを投稿