/*---------------------------------- コレスポンデンス分析結果のプロット ------------------------------------*/ %macro caplot( data =, id =, addanno =, print = obs var obsvar, font = HWDMX003, obs_font = HWDMX003, var_font = HWDMX001, obs_c = red, var_c = blue , device = winprtm, name = CAPLOT, des = CAPLOT, horder =, vorder =, obs_size = 0.8, var_size = 0.8, horigin = 1.5 cm, vorigin = 2.5 cm, hlength = 15 cm, vlength = 15 cm, value_h = 0.5, dim1lab = "DIM1", dim2lab = "DIM2", dim1font = mincho , dim2font = mincho , label_h = 1.0 ) ; %LET I = 1 ; %let obs = n ; %let var = n ; %let obsvar = n ; %let print = %upcase( &print ) ; %DO i = 1 %to 3 ; %if %SCAN( &print, &I, %STR( ) ) = OBS %then %let obs = y ; %if %SCAN( &print, &I, %STR( ) ) = VAR %then %let var = y ; %if %SCAN( &print, &I, %STR( ) ) = OBSVAR %then %let obsvar = y ; %END; goptions horigin = &horigin vorigin = &vorigin device = &device ; %if &obsvar = y %then %do ; data _anno_ ; set &data ; length function $8 text $40 color $8 ; xsys = '2' ; ysys = '2' ; text = &id ; style = "&obs_font" ; x = dim1 ; y = dim2 ; if _type_ = 'OBS' then do; size = &obs_size ; /* サンプル番号の印刷サイズ */ color = "&obs_c" ; position = '5' ; function = 'LABEL' ; style = "&obs_font" ; output ; end; if _type_ = 'VAR' then do; color = "&var_c" ; size = &var_size ; /* 変数名の印刷サイズ */ if dim1 >= 0 then position = '6' ; /* left justify */ else position = '4' ; /* right justify */ function = 'LABEL'; style = "&var_font" ; output ; end; run ; %if &addanno ne %str() %then %do ; data _anno_ ; set _anno_ &addanno ; run ; %end ; proc gplot data = &data ; plot dim2 * dim1 / anno = _anno_ frame href = 0 vref = 0 lvref = 3 lhref = 3 vaxis = axis2 haxis = axis1 vminor = 1 hminor = 1 name = "&name" des = "&des" ; axis1 length = &hlength offset = ( 2 ) value = ( h = &value_h ) label = ( h = &label_h f = &dim1font &dim1lab ) %if %str( &horder ) ne %str() %then %do ; order = &horder %end ; ; axis2 length = &vlength offset = ( 2 ) value = ( h = &value_h ) label = ( a = 90 h = &label_h f = &dim1font &dim2lab ) %if %str( &vorder ) ne %str() %then %do ; order = &vorder %end ; ; symbol v = none ; run ; quit ; %end ; %if &var = y %then %do ; data _anno_ ; set &data ; length function $8 text $16; xsys = '2' ; ysys = '2' ; text = &id ; style = "&font" ; x = dim1 ; y = dim2 ; if _type_ = 'OBS' then delete ; if _type_ = 'VAR' then do; color = 'BLACK '; size = &var_size ; /* 変数名の印刷サイズ */ if dim1 >= 0 then position = '6' ; /* left justify */ else position = '4' ; /* right justify */ function = 'LABEL'; output ; end; run ; proc gplot data = &data ; where _type_ = 'VAR' ; plot dim2 * dim1 / anno = _anno_ frame href = 0 vref = 0 lvref = 3 lhref = 3 vaxis = axis2 haxis = axis1 vminor = 1 hminor = 1 ; axis1 length = &hlength offset = ( 2 ) value = ( h = &value_h ) label = ( h = &label_h ) %if %str( &horder ) ne %str() %then %do ; order = &horder %end ; ; axis2 length = &vlength offset = ( 2 ) value = ( h = &value_h ) label = ( h = &label_h ) %if %str( &vorder ) ne %str() %then %do ; order = &vorder %end ; ; symbol v = none ; run ; quit ; %end ; %if &obs = y %then %do ; data _anno_ ; set &data ; length function $8 text $16; xsys = '2' ; ysys = '2' ; text = &id ; style = "&font" ; x = dim1 ; y = dim2 ; if _type_ = 'OBS' then do; size = &obs_size ; /* サンプル番号の印刷サイズ */ color = 'BLACK' ; position = '5' ; function = 'LABEL' ; output ; end; if _type_ = 'VAR' then delete ; run ; proc gplot data = &data ; where _type_ = 'OBS' ; plot dim2 * dim1 / anno = _anno_ frame href = 0 vref = 0 lvref = 3 lhref = 3 vaxis = axis2 haxis = axis1 vminor = 1 hminor = 1 ; axis1 length = &hlength offset = ( 2 ) value = ( h = &value_h ) label = ( h = &label_h ) %if %str( &horder ) ne %str() %then %do ; order = &horder %end ; ; axis2 length = &vlength offset = ( 2 ) value = ( h = &value_h ) label = ( h = &label_h ) %if %str( &vorder ) ne %str() %then %do ; order = &vorder %end ; ; symbol v = none ; run ; quit ; %end ; goptions device = win ; %mend caplot ;