2018年12月28日金曜日

SASで雪だるまを描く




2018年も本ブログを見て頂いた方、コメントしてくださった方、どうもありがとうございました!
来年もどうぞよろしくお願いいたします!!

SASでグリーティングカードを作ってみました。


以下が今回作ったプログラムです。SAS9.4以降で動作します。
*** 描画用データ作成 ;
data SNOW;
  * ゆきだるま描画用データ作成 ;
  retain x1  0  y1  0;
  retain x2  0  y2 -6.5;
  retain x3 -1  y3 1;
  retain x4  1  y4 1;
  retain x5  0  y5 0;
  retain x6  0  y6 0.5;
  retain x7  0  y7 5.5;
  retain x8  0  y8 7;

  * ゆき描画用データ作成 ;
  call streaminit(777);
  do scene=1 to 5;
     do snow_x = -10 to 10 by 1;
        snow_y = rand('uniform')*30-15;
        output;
     end;
  end;
run;

*** 描画 ;
title ;
options  ANIMATION=START  ANIMDURATION=1   PRINTERPATH=GIF ;

ods noresults;
ods printer file="出力するパスを指定\test.gif";
ods graphics on / height=4in width=4in;

%macro ANIMATION;
  %do i=1 %to 5;
  proc sgplot data=SNOW noautolegend;
     where scene=&i;
     styleattrs wallcolor=skyblue;
     symbolchar name=SNOW char='2744'x;
     scatter x=snow_x y=snow_y /  markerattrs=(symbol=SNOW  size=1.5cm color=white);
     scatter x=x1 y=y1  /  markerattrs=(symbol=circlefilled  size=3cm color=white);
     scatter x=x2 y=y2  /  markerattrs=(symbol=circlefilled  size=4cm color=white);
     scatter x=x3 y=Y3  /  markerattrs=(symbol=circlefilled  size=0.2cm color=black);
     scatter x=x4 y=Y4  /  markerattrs=(symbol=circlefilled  size=0.2cm color=black);
     scatter x=x5 y=y5  /  markerattrs=(symbol=ArrowDown  size=0.5cm color=black);
     scatter x=x6 y=y6  /  markerattrs=(symbol=TriangleDownFilled  size=0.3cm color=orange);
     scatter x=x7 y=y7  /  markerattrs=(symbol=TriangleFilled  size=1.2cm color=red);
     scatter x=x8 y=y8  /  markerattrs=(symbol=CircleFilled  size=0.6cm color=white);
     inset "Happy Holidays"  /  position=top textattrs=(color=green size=35cm family='Arial');
     xaxis min=-3 max=3  display=none;
     yaxis min=-5 max=1  display=none;
  run;
  %end;
%mend;

%ANIMATION;

ods graphics on / reset=all;
ods printer close ;
ods results;

options  ANIMATION=STOP ;


0 件のコメント:

コメントを投稿