%let name=basel; filename odsout '.'; %let gray=gray77; /* In theory, all you'll have to do to generate a new chart is to change the data here (and maybe the titles/footnotes) ... (Note that the 'position' is used in annotate, to position the label around the point - unfortunately it is trial-and-error picking a good annotate position. Here's a layout of the annotate position values ('5' is centered)... 1 2 3 a b b 4 5 6 d e f 7 8 9 */ data mydata; input company $ 1-30 position $ 31 vision ability; datalines; SAS c 74 78 SAP 2 55 68.5 Reveleus c 57 65 Algorithmics a 54 64 FinArch c 63 57 Fermat a 50 53 SunGard c 54 47 Teradata a 49 40 Fernbach c 30 26 IRIS 6 22 22 Ci3 6 15 16 FRS f 9 9 RCS d 13 20 Experian 2 10 27 ; run; data mydata; set mydata; length html $200; html= 'title='||quote(trim(left(company)))|| ' href='||quote('http://www.google.com/search?hl=en&q='||trim(left(company))||'+gartner'); run; title1 link="http://mediaproducts.gartner.com/reprints/sas/article7/article7.html" j=l move=(+5,+0) ls=1.5 "Figure 1."; title2 j=l move=(+5,+0) "Magic Quadrant for Basel II Software Applications"; title3 angle=-90 height=3 " "; footnote1 height=11pct " "; footnote2 justify=right height=3 font="albany amt" color=&gray "As of September 2006 "; /* Some shared code to create the 'anno_box' data set, which annotates the axis frame, with rounded corners. */ %let cornersize=5; %include '../democd3/anno_box.sas'; data anno_box; set anno_box; color="&gray"; run; data anno_arrows; length function color $8 style $35 text $30; xsys='3'; ysys='3'; hsys='3'; color="&gray"; /* Bottom arrow */ x=6; y=11; function='move'; output; x=94; function='draw'; size=.01; output; x=x-2; y=y-1.5; output; x=6+((94-6)/2); y=11; function='label'; style='albany amt'; size=3.5; position='e'; text='completeness of vision'; output; /* Left-side arrow */ x=6; y=11; function='move'; output; y=83; function='draw'; size=.01; output; x=x-1.5; y=y-2; output; x=6; y=11+((83-11)/2); function='label'; style='albany amt'; size=3.5; position='2'; angle=90; text='ability to execute'; output; run; data anno_text; length function color $8 style $35 text $30; xsys='1'; ysys='1'; hsys='3'; color="&gray"; function='label'; style='albany amt'; size=3.0; x=3; y=0; position='f'; text='niche players'; output; x=51; y=0; position='f'; text='visionaries'; output; x=3; y=100; position='3'; text='challengers'; output; x=51; y=100; position='3'; text='leaders'; output; run; data anno_pointlabels; set mydata; length function color $8 style $35 text $30; xsys='2'; ysys='2'; hsys='3'; when='a'; color="black"; function='label'; size=2.5; x=vision; y=ability; text=' '||trim(left(company))||' '; run; data all_anno; set anno_box anno_arrows anno_text anno_pointlabels; run; goptions device=png; ODS LISTING CLOSE; ODS HTML path=odsout body="&name..htm" (title="Gartner Magic Quadrant for Basel II Software Applications, 2006 - SAS/Graph Chart") style=htmlblue; axis1 order=(0 to 100 by 10) label=(color=white 'a space') value=none major=none minor=none style=0; axis2 order=(0 to 100 by 10) label=none value=none major=none minor=none style=0; goptions gunit=pct htitle=4.5 ftitle="albany amt/bold" htext=3.2 ftext="albany amt/bold"; goptions xpixels=450 ypixels=500; symbol1 color=orange value=dot height=2.5 interpol=none; symbol1 color=orange font="albany amt/unicode" value='25cf'x height=3.2 interpol=none; proc gplot data=mydata anno=all_anno; plot ability*vision / vaxis=axis1 haxis=axis2 href=50 chref=&gray vref=50 cvref=&gray html=html des='' name="&name" ; run; quit; ODS HTML CLOSE; ODS LISTING;