/**********************************************************************/ data one; input mid $ year amount; cards; A 1990 22 A 1991 35 A 1992 10 B 1990 30 B 1991 5 B 1992 20 ; /**********************************************************************/ proc sort data=one out=one; by mid descending amount; run; /**********************************************************************/ data two; set one; length color $8 value $5; count+1; select(year); when(1990) do; color='black'; value='empty'; end; when(1991) do; color='black'; value='x3'; end; when(1992) do; color='graycc'; value='solid'; end; end; call symput('color'||left(count),color); call symput('value'||left(count),value); call symput('total',count); run; /**********************************************************************/ options mprint; %macro patterns; %do i=1 %to &total; pattern&i v=&&value&i c=&&color&i; %end; %mend; %patterns; /**********************************************************************/ %annomac; data legend; %dclanno; %system(3,3,3); %bar(20,1,25,3,black,0,empty); %label(26,2,'1991',black,0,0,3,centb,>); %bar(45,1,50,3,black,0,x3); %label(51,2,'1992',black,0,0,3,centb,>); %bar(70,1,75,3,graycc,0,solid); %label(76,2,'1993',black,0,0,3,centb,>); run; /**********************************************************************/ goptions ftext=zapf htext=4 pct htitle=6 pct; proc gchart data=two; title 'Subgroups Ordered by Value'; footnote1 h=4 ' '; vbar mid / subgroup=count sumvar=amount width=8 maxis=axis1 raxis=axis1 nolegend anno=legend; axis1 label=none; run; quit; /**********************************************************************/