data CarPref; input Make $12. Model $13. (S1-S25) (1.); datalines; Cadillac Deville 8007990491240508971093809 Chevrolet Aveo 0051200423451043003515698 Chevrolet Cavalier 4053305814161643544747795 Chevrolet Malibu 6027400723121345545668658 Dodge Intrepid 7006000434101107333458708 Dodge Stratus 3005005635461302444675655 Dodge Neon 4005003614021602754476555 Ford Taurus 2024006715021443530648655 Ford Mustang 5007197705021101850657555 Ford Focus 0021000303030201500514078 Honda Accord 5956897609699952998975078 Honda Civic 4836709507488852567765075 Lincoln LS 7008990592230409962091909 Pontiac Firebird 0107895613201206958265907 Volkswagen Jetta 4858696508877795377895000 Volkswagen Beetle 4858509709695795487885000 Volvo S40 9989998909999987989919000 ; run; * Compute Two Component Model; ods graphics; ods exclude all; ods output mdprefplot=plotdata; proc prinqual data=CarPref n=2 replace mdpref method=mgv; id model; transform monotone(S1-S25); run; ods select all; proc template; define statgraph vectorplot; begingraph; entrytitle "Multidimensional Preference Analysis"; entrytitle "of Preference Ratings for Automobiles"; layout overlayequated / equatetype=fit cycleattrs=true; referenceline y=0 / datatransparency=.7; referenceline x=0 / datatransparency=.7; vectorplot y=vec2 x=vec1 xorigin=0 yorigin=0 / datalabel=label2var shaftprotected=false; scatterplot y=prin2 x=prin1 / datalabel=idlab1 primary=true markerattrs=(symbol=circlefilled); endlayout; endgraph; end; run; proc sgrender data=plotdata template=vectorplot; run;