Hi:
I just wanted to follow up on this. I saw the notes on using annotate - forgot about this approach entirely. My opinion is that you can do almost anything with it but it's more complex and requires different skills and more training.
The GTL workarounds seem to get close to my goal of left justifying a label.
I began with the golf example
http://support.sas.com/kb/35/135.html
and made some minor tweaks - the major one was adding another scatterchart with only a y2axis displayed.
The one remaining issue is that the cell header for the first column doesn't display so I'm not done, but it's getting closer.
Thanks for the feedback and if anyone has ideas on the cell header I'd sure like to hear them.
Ed
The code (with some minor tweaks).
data PGA2007;
input Rank 2. Player & $15. Age Events Rounds CutsMade Top10 Mistresses Earnings;
retain Constant 1;
format Earnings dollar12.;
format age events Mistresses 3.0;
datalines;
1 Tiger Woods 33 16 61 16 12 9 10867052
2 Phil Mickelson 38 22 73 16 7 0 5819988
3 Vijay Singh 45 27 101 25 7 0 4728377
4 Steve Stricker 41 23 80 19 9 0 4663077
5 K.J. Choi 38 25 88 20 7 0 4587859
6 Rory Sabbatini 32 23 80 18 10 0 4550040
7 Jim Furyk 38 24 84 20 8 0 4154046
8 Zach Johnson 32 23 78 18 5 0 3922338
9 Sergio Garcia 29 19 67 16 7 0 3721185
10 Aaron Baddeley 27 23 82 19 7 0 3441119
run;
%let standardopts=%str( walldisplay=none border=false
yaxisopts=(display=none reverse=true type=discrete)
xaxisopts=(display=none offsetmin=0.1 offsetmax=0) );
* options for all scatterplots;
proc template;
define statgraph BarTableHorz;
begingraph / designwidth=600px designheight=400px;
entrytitle "Professional Golf Statistics for 2007";
layout lattice / columns=5 columngutter=1
columnweights=(.20 .12 .12 .14 .42);
cell; /* column1: name */
cellheader; entry halign=right "Player"; endcellheader;
layout overlay / &standardopts. y2axisopts=(reverse=true type=discrete);
scatterplot y=player x=constant / markercharacter=Player
markerattrs=(size=0) yaxis=y2;
endlayout;
endcell;
cell; /* data column */
cellheader; entry halign=center "Age" ; endcellheader;
layout overlay / &standardopts. ;
scatterplot y=player x=constant / markercharacter=age
markerattrs=(size=0);
endlayout;
endcell;
cell; /* data column */
cellheader; entry halign=center "Events"; endcellheader;
layout overlay / &standardopts. ;
scatterplot y=player x=constant / markercharacter=events
markerattrs=(size=0);
endlayout;
endcell;
cell; /* data column */
cellheader; entry halign=center "Mistresses"; endcellheader;
layout overlay / &standardopts. ;
scatterplot y=player x=constant / markercharacter=Mistresses
markerattrs=(size=0);
endlayout;
endcell;
cell; /* barchart */
cellheader; entry halign=center "Earnings" ; endcellheader;
layout overlay / walldisplay=none border=false
yaxisopts=(reverse=true label=" " display=none)
xaxisopts=(griddisplay=on labelattrs=(weight=bold)
linearopts=(tickvalueformat=(extractscale=true)) );
barchart x=player y=Earnings /orient=horizontal outlineattrs=(color=white);
endlayout;
endcell;
endlayout;
endgraph;
end;
run;
proc template;
define Style BarTableHorzStyle;
parent = styles.journal;
style GraphFonts from GraphFonts / 'GraphDataFont' = (", ",10pt);
style graphaxislines from graphaxislines / contrastcolor=white;
/* keep axis but hide it. it needs to exist to or the labels are centered */
end;
run;
ods pdf file="c:\temp\BarTableHorz4.pdf" style=BarTableHorzStyle;
title;
proc sgrender data=PGA2007 template=BarTableHorz;
run;
ods pdf close;