%let name=calls; filename odsout '.'; /* As of SAS v9.1.3, the GBARLINE only allows 1 line to be used with the bar. This example shows one way you might 'imitate' a barline plot, using regular GPLOT (with wide 'needles' that look like bars). This technique should work with just about any version of sas that is currently in the field. */ data mydata; format date monyy5.; format Product1 Product2 Product3 Product4 Product5 percent6.0; format calls comma8.; input date date7. calls Product1 Product2 Product3 Product4 Product5; cards; 15apr03 27600 .93 .65 .16 .15 .22 15may03 26000 .91 .67 .13 .12 .20 15jun03 29000 .81 .77 .12 .15 .18 15jul03 31000 .83 .77 .17 .13 .17 15aug03 34000 .92 .77 .12 .15 .16 15sep03 39600 .96 .67 .22 .14 .16 15oct03 44300 .98 .67 .44 .15 .18 15nov03 48200 .98 .66 .59 .15 .16 15dec03 38000 .91 .78 .69 .19 .16 15jan04 22500 .98 .67 .16 .29 .12 15feb04 25000 .97 .67 .11 .30 .12 15mar04 28000 .96 .66 .19 .33 .13 15apr04 32000 .96 .66 .10 .34 .16 15may04 27000 .85 .76 .17 .32 .17 15jun04 28300 .86 .75 .14 .33 .15 ; run; data mydata; set mydata; length myhtml $500; myhtml='title='|| quote( 'Date: '||trim(left(put(date,monyy5.)))||'0D'x|| 'Total Calls: '||trim(left(put(calls,comma8.)))||'0D'x|| '------------------------- '||'0D'x|| 'Product1: '||trim(left(put(Product1,percent6.0)))||'0D'x|| 'Product2: '||trim(left(put(Product2,percent6.0)))||'0D'x|| 'Product3: '||trim(left(put(Product3,percent6.0)))||'0D'x|| 'Product4: '||trim(left(put(Product4,percent6.0)))||'0D'x|| 'Product5: '||trim(left(put(Product5,percent6.0)))||' ' ); run; data img; length function text $ 8; length color $ 8; xsys='3'; ysys='3'; hsys='3'; when='A'; /* phone image from http://www.telephoneart.com */ function='move'; x=0; y=42; output; function='image'; x=x+8; y=y+11; imgpath='phone.gif'; style='fit'; output; /* checkmark image from http://www.aperfectworld.org/academic.htm */ function='move'; x=91; y=42; output; function='image'; x=x+8; y=y+11; imgpath='check.gif'; style='fit'; output; run; GOPTIONS DEVICE=png; ODS LISTING CLOSE; ODS HTML path=odsout body="&name..htm" style=minimal gtitle gfootnote ; goptions noborder; goptions ftitle="albany amt" ftext="albany amt" htitle=5pct htext=2.5pct; goptions xpixels=1100 ypixels=450; axis1 label=(a=-90 'Product Completion Rates') minor=none offset=(0,0) order=(0 to 1.00 by .2); axis2 label=(a=90 f="albany amt" c=black 'Selling Team Sales Calls ' /* get a little tricky, to put a colored box beside the axis label */ f=marker c=cxffd45d ' U ' ) minor=none offset=(0,0) order=(0 to 50000 by 10000); /* Here's the month axis - needed the 'offset' to give a little extra room for the wide 'needle/bars'. */ axis3 minor=none label=none offset=(5,5) /* value=(angle=90) */ order=('15apr03'd to '15jun04'd by month); legend1 position=(right bottom) across=1 label=none frame; /* Instead of using the regular line plot symbol markers, I'm using characters from the sas/graph 'marker' software font for some of the symbols, which look better. I'm also using a 'spline' interpolation to look 'pretty' -- you could change it to 'join' which would probably be more technically correct. */ symbol1 w=1 font=marker value='P' i=spline c=cx0000ff; symbol2 w=1 font=marker value='U' i=spline c=green; symbol3 w=1 font=marker value='C' i=spline c=red; symbol4 w=1 value=dot h=1.5 i=spline c=purple; symbol5 w=1 font=marker value='V' i=spline c=magenta h=1.2; /* This is how I make the things that "look" like bars in the plot (they're actually very wide 'needles' rather than bars. But hey - if it looks like a duck, walks like a duck, and sounds like a duck ... ;) */ symbol6 i=needle w=25 c=cxffd45d; title j=l "Sales Calls (left axis / bars)" j=r "Detail Completion Rates (right axis / lines)"; title2 a=90 h=18pct " "; footnote c=gray "Mouse over markers to see detailed data"; proc gplot data=mydata anno=img; /* do the needle/bars first, so they'll be 'behind' the lines */ plot calls*date=6 / vaxis=axis2 haxis=axis3 href='15dec03'd lhref=2 chref=gray des="" name="&name"; /* Now, do all the lines last, so they'll be 'on top of' the bars */ plot2 Product1*date=1 Product2*date=2 Product3*date=3 Product4*date=4 Product5*date=5 / overlay legend=legend1 vaxis=axis1 autovref lvref=2 cvref=graycc cframe=grayfb html=myhtml des="" name="&name"; run; quit; ODS HTML CLOSE; ODS LISTING;