/**********************************************************************/
goptions reset=all ftext=swissb htext=3 rotate=landscape;
data states;
set maps.states;
/* not all boundary detail needed */
if density<=2;
/* select South Atlantic */
if state in (12,13,37,45);
/* convert STATE value to hex to use */
/* for CHAR variable */
char=input(put(state,hex2.),$hex2.);
/* state outlines are polygons */
lp='p';
/* reverse image of states */
x=-x;
run;
/**********************************************************************/
proc sort;
by char;
run;
proc means data=states noprint mean;
var y x;
by char;
output out=mean min=ymin xmin max=ymax xmax
mean=ymean xmean;
run;
/**********************************************************************/
data states2;
merge states mean;
by char;
scale=max(ymax-ymin,((xmax-xmin)*.50));
y=(y-ymean)/(scale);
x=(x-xmean)/(scale);
run;
/**********************************************************************/
libname gfont0 '\ob your-font-library\obe ';
proc gfont data=states2 filled name=stfont nodisplay;
run;
/**********************************************************************/
data farms;
input stcode $ farms @@;
number=round((farms/10000),1);
do num=1 to number;
output;
end;
cards;
FL 41000 GA 48000 NC 64000 SC 25000
;
/**********************************************************************/
proc sort data=farms;
by number stcode;
run;
/**********************************************************************/
data farms;
set farms end=eof;
by number stcode;
/* hex value of state code */
shex=put(stfips(stcode),$hex2.);
if first.stcode then do;
/* count number of states */
nstates+1;
call symput('state'||left(nstates),trim(stcode));
call symput('scode'||left(nstates),trim(shex));
end;
if eof then do;
/* total number of states */
call symput('total',nstates);
/* total number of symbols */
call symput('nsyms',num);
/* number of reference lines */
call symput('maxref',num-1);
end;
run;
/**********************************************************************/
%macro order;
%do i=1 %to &total;
"&&state&i"
%end;
%mend;
/**********************************************************************/
%macro symbols;
%do i = 1 %to &total;
symbol&i font=stfont h=6
value="&&scode&i"x interpol=none color=black;
%end;
%mend;
%symbols /* generate SYMBOL statements */
/**********************************************************************/
title h=8 pct 'NUMBER OF FARMS';
title2 h=8 pct 'SOUTH ATLANTIC U. S.';
footnote h=2 '1 SYMBOL = 10,000 FARMS (ROUNDED)';
footnote2 j=l h=1.5 'SAS/GRAPH' m=(+0,+.5)
'02'x m=(+0,-.5) ' Software';
proc gplot data=farms;
plot stcode*num=nstates
/ nolegend
vaxis=axis1
haxis=axis2
/* draw vertical ref lines */
href=1.5 to &maxref..5
/* dashed reference lines */
lhref=2
/* frame around plot area */
frame
/* light gray frame background */
cframe=graydd;
axis1 order=%order label=none offset=(3,3) width=5
major=none minor=none;
axis2 order=1 to &nsyms by 1 label=none major=none
minor=none value=none offset=(8,8);
run;
quit;
/**********************************************************************/
axis1 order="SC" "FL" "GA" "NC" label=none offset=(3,3)
width=5 major=none minor=none;
axis2 order=1 to 6 by 1 label=none major=none minor=none
value=none offset=(8,8);
/**********************************************************************/
symbol1 font=stfont h=6 value='0C'x interpol=none
color=black;
symbol2 font=stfont h=6 value='0D'x interpol=none
color=black;
symbol3 font=stfont h=6 value='25'x interpol=none
color=black;
symbol4 font=stfont h=6 value='2D'x interpol=none
color=black;
/**********************************************************************/