Hi,
I am using GCHART to produce clustered stacked bar chart using the following code. I want to show data labels (percentage of total as rounded without % sign) of individual components within a vertical bar along with letter grouping that is available in the dataset as an individual column with letters for each observation. The first issue I am not able to resolve is that what changes I need to make in the following code to make it rounded percentages without % sign. I have used Inside=subpct option. I am using 9.3 TS1M2.
Here is the code!
Data barlabel;
length group $15 midpoint $10 Labels $3;
retain xsys ysys '2' color 'black' when 'a';
set DM;
function='label';
midpoint=cultivar;
group=SamplingN;
subgroup=Part;
position="8";
text=labels;
color="black";
size=1;
run;
/* Generate vertical bar chart */
goptions htext=1.6 htitle=2 Ftitle="Times New Roman" Ftext="Times New Roman";
options orientation=Landscape;
/*ods listing image_dpi=450;
ods html close;
ods graphics /noborder imagefmt=jpeg ANTIALIASMAX=6300 ; */
Proc gchart data=DM;
by year;
where SamplingN;
vbar Cultivar / discrete noframe
group=SamplingN
subgroup=Part
sumvar=DM
Space=2
/* anno=barlabel*/
Inside=subpct
/* Width=6
Gspace=5 */
raxis=axis1 maxis=axis2 gaxis=axis3 legend=legend1;
axis1 label=(a=90 f="Times New Roman" h=4pct "Dry matter (Mg/ha)" ) value=(f="Times New Roman" h=3pct) order=0 to 12 by 2 minor=none;
axis2 label=none value=(f="Times New Roman" h=2pct);
axis3 label=none value=(f="Times New Roman" h=2.7pct);
legend1 position=(top left inside) across=1 order= ("PL" "LL" "Head" "FL" "Stem") noframe label=none value=(f="Times New Roman" j=l) shape=bar(5,2);
Run;
Thanks for the help!
Bhupinder
Message was edited by: Bhupinder Farmaha
It looks like part of your code has been dropped. You may want to paste into a pure text editor such as Notepad before copying and pasting here.
How are you creating the variable called 'labels' (that you use in the annotated text=labels)?
If you have a numeric variable that has percent values in it (such as foo=.20 for 20%), then you can set the annotated text as follows...
If you *do* want the % sign, then apply a percent format, something like:
text=put(foo,percentn7.2);
If you do *not* want the % sign in the annotated text, then multiply by 100, something like ...
text=put(foo*100,comma7.0);
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.