BookmarkSubscribeRSS Feed
Bhupi
Fluorite | Level 6

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

2 REPLIES 2
ballardw
Super User

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.

GraphGuy
Meteorite | Level 14

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);

sas-innovate-2024.png

Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.

 

Register now!

How to Concatenate Values

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.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 2 replies
  • 899 views
  • 0 likes
  • 3 in conversation