2019年3月14日木曜日

グラフに画像を貼り付ける【GTL編】




以下は数年前に堀切菖蒲園てとこで撮った花菖蒲です。超時期外れですが。




この写真をGTLのDRAWIMAGEステートメントを使ってグラフ内に描画してみます。

proc template ;
    define statgraph MYTEMP ;
    begingraph ;

    layout overlay;
       scatterplot x=petallength y=petalwidth / group=species name="leg1" markerattrs=(symbol=circlefilled);
       drawimage "保存先のパス\flower.JPG" / transparency=0.7
                                                                       width=100
                                                                       height=100
                                                                       sizeunit=percent
                                                                       drawspace=GraphPercent;
       discretelegend "leg1" / title="Age";
    endlayout;

    endgraph;
    end;
run;

proc sgrender data=SASHELP.IRIS template=MYTEMP;
run;


使ったデータはSASHELP.IRISなので、写真とグラフの内容が合ってますね
(厳密に言うと写真とSASHELP.IRISは別の種だけど、同じアヤメ科アヤメ属の植物ということで・・)


設定してるオプションについてもざっくり説明をしておきます。

  • transparency=0.7 … 透明度を0.7に
  • width=100 height=100 sizeunit=percent … 幅と高さを100%に
  • drawspace=GraphPercent … 画像の描画範囲をグラフエリア全体に



これって応用範囲が広くて、例えばグラフの中にグラフを貼ったり、以下のように会社とかのロゴをグラフの隅に貼り付けたりとか、色々できます。

proc template ;
    define statgraph MYTEMP ;
    begingraph ;

    entrytitle "";
    layout overlay;
       scatterplot x=petallength y=petalwidth / group=species name="leg1" markerattrs=(symbol=circlefilled);
       drawimage "貼り付けるファイルを指定" / transparency=0.5
                                                                          width=40
                                                                          sizeunit=percent
                                                                          drawspace=datapercent
                                                                          x=0 
                                                                          y=100
                                                                          anchor=topleft;
        discretelegend "leg1" / title="Age";
    endlayout;

    endgraph;
    end;
run;

proc sgrender data=SASHELP.IRIS template=MYTEMP;
run;

  • transparency=0.5 … 透明度を0.5に
  • width=40 sizeunit=percent … 幅を40%に
  • drawspace=datapercent x=0 y=100 anchor=topleft … 画像の描画範囲をPLOTエリアにして、左上に表示されるよう調整



0 件のコメント:

コメントを投稿