proc corresp data =postx out=ca short dimens=3; var _numeric_ ; id id; *plot the results; proc sort; by _type_ inertia; data ca_obs; set ca; if _type_ eq 'OBS'; rank=_n_; goptions reset=global gunit=in ftitle="garamond" ftext="garamond" htitle=.5 htext=.3; symbol1 value=dot color=orange h=.4 pointlabel =("#id" font="garamond" h=.2 j=left); symbol2 value=circle color=black h=.4 ; *plot the inertias; axis1 offset=(.1,.1) label=(angle=90 'Inertia') major=(height=.2) minor=none width=2; axis2 offset=(.1,.1) label= ('Rank' ) major=(height=.2) minor=none width=2; proc gplot; plot inertia*rank =1 inertia*rank =2 / overlay haxis=axis2 vaxis=axis1; run; data ca_vars; set ca; if _type_ eq 'VAR'; rank= _n_; proc gplot; plot inertia*rank =1 inertia*rank =2 / overlay haxis=axis2 vaxis=axis1; run; proc gplot data=ca_obs; plot sqcos2*sqcos1=1 sqcos2*sqcos1=2 /overlay; proc gplot data=ca_obs; plot sqcos3*sqcos1=1 sqcos3*sqcos1=2/ overlay ; run; proc gplot data=ca_vars; plot sqcos2*sqcos1=1 sqcos2*sqcos1=2 /overlay; proc gplot data=ca_vars; plot sqcos3*sqcos1=1 sqcos3*sqcos1=2 /overlay; run; axis1 offset=(.1,.1) label=(angle=90 'Dimension 2') major=(height=.2) minor=none width=2; axis2 offset=(.1,.1) label= ('Dimension 1' ) major=(height=.2) minor=none width=2; proc gplot data=ca; by _type_; plot dim2*dim1=1 dim2*dim1=2 / overlay haxis=axis2 vaxis=axis1; run; axis1 offset=(.1,.1) label=(angle=90 'Dimension 3') major=(height=.2) minor=none width=2; axis2 offset=(.1,.1) label= ('Dimension 1' ) major=(height=.2) minor=none width=2; proc gplot data=ca; by _type_; plot dim3*dim1=1 dim3*dim1=2 / overlay haxis=axis2 vaxis=axis1; run;