読者です 読者をやめる 読者になる 読者になる

SAS/Graph

SAS

SASグラフを今の自分が出来る限界までいじってみた。

dm 'log; clear; output; clear';
proc datasets lib = work kill; run;
options linesize=120 pagesize = 300 mprint;

%let execpath = " ";
%let Path = " ";
%macro setexecpath;
  %let execpath = %sysfunc(getoption(sysin));
  %if %length(&execpath) = 0 %then
    %let execpath = %sysget(sas_execfilepath);
  data _null_;
    do i = length("&execpath") to 1 by -1;
      if substr("&execpath", i, 1) = "\" then do;
        call symput("Path", substr("&execpath", 1, i));
        stop;
      end;
    end;
  run;
%mend setexecpath;
%setexecpath;

libname Out "&Path.";

data Graph;
  do x = -3 to 5 by 0.0001;
    g = 1; y = pdf('Normal', x, g - 1, sqrt(1 ** 2));output;
    g = 2; y = pdf('Normal', x, g - 1, sqrt(1 ** 2));output;
    g = 3; y = pdf('Normal', x, g - 1, sqrt(1 ** 2));output;
  end;
run;

goptions reset = all;
goptions ftext = '小塚ゴシック Std R' ftitle = 'Times New Roman/it/bo'
         htitle = 1.6 htext = 1.6 hsize = 6 in vsize = 6 in;

filename grafout "&Path.graph_g.emf";
goptions device=emf gsfname=grafout gsfmode=replace;

options linesize=120 pagesize = 300;

title f='Times New Roman/it' 'f'
    h=1 m=(+0, -0.4) 'X ' h=1.6 m=(+0, +0.4)
    f='Times New Roman' '('
    f='Times New Roman/it' 'x'
    f='Times New Roman' ')';
proc gplot data = Graph;
  plot y * x = g / vaxis = axis1 haxis = axis2 legend = legend1
    grid lv = 1 cv = cxE9DECA ch = cxFFFFFF noframe;
  symbol1 i = splines l = 1 w = 2 c = cx5984B1;
  symbol2 i = splines l = 2 w = 2 c = cxCA6E93;
  symbol3 i = splines l = 4 w = 2 c = cxA4D57C;
  axis1 minor = none label=(a=90 'Density') order=(0 to 0.5 by 0.1);
  axis2 minor = none label=(f='Times New Roman/it' 'x') offset=(2, 2);
  legend1 position = (top left inside) offset = (2, -1.5)
    mode = protect across = 1 shape = symbol(7, 1)
    cframe = cxFAFAF8 cborder = cxE9DECA
    label = none
    value = (
      justify = l 'mean = 1'
      justify = l 'mean = 2'
      justify = l 'mean = 3'
    );
run; quit;



オプションたち

autovref  autohref  grid
cautovref cautohref cvref chref
lautovref lautohref lvref lhref

autovref, autohref, grid で自動的に参照線が入ります。
cautovref, cautohref, cv(ref) ch(ref) で参照線の色、lautovref, lautohref, lv(ref) lh(ref) で参照線の線種を変更できます。
参照線の色としては、淡い色がおすすめです。
cautovref = cxE9DECA とか、


また、SAS の色指定は、

cautovref = cxXXXXXX

の様な形式でも指定でき、RGB を HEX コードに変換したものになっています。


イタリック体やボールド体のフォントは

"Times New Roman/it"
"Times New Roman/bo"

こんな感じに。


強引に添え字を作ることもできます。

title f='Times New Roman/it' 'f'
    h=1 m=(+0, -0.4) 'X ' h=1.6 m=(+0, +0.4)
    f='Times New Roman' '('
    f='Times New Roman/it' 'x'
    f='Times New Roman' ')';

履歴

2007年ぐらいに書いた記事の移植です。