BookmarkSubscribeRSS Feed
raja777pharma
Fluorite | Level 6

Hi ,

 

I would like to add text/special (Mar20*) charcters in the one of the selected bar as below.

 

I am using below code.

 

proc sgplot data=indata;
	   styleattrs 
	   datafillpatterns=(r1 r3 x1 l3)
	   datacontrastcolors=(white black black black);
	   symbolchar
	   
	   vbar group1 / response=COL1 group=group2 grouporder=data groupdisplay=stack fillattrs=(color="white") 
	   				   outlineattrs=(color="black") fillpattern;
	   keylegend / position=bottom title="Bottom TItle 1";
	   yaxis grid label="Number of tiles";
	   xaxis display=(nolabel) discreteorder=data valueattrs=(size=7);   
	run;

 

Thank you,

Rajasekhar 

 

3 REPLIES 3
ballardw
Super User

Provide a variable with the value associated with the xaxis variable

In the VBAR statement:

Use DATALABEL= the variable name you create for that text

Use DATALABELATTRS to set attributes for the text

Use DATALABELPOS=Top to place the text at the top of the bar. You may want to control the Y Axis to allow space inside the graph for this.

Ksharp
Super User
ods graphics /attrpriority=none;
proc sgplot data=sashelp.heart;
	   styleattrs  datafillpatterns=(r1 r3 x1 l3)
	   datacontrastcolors=(white black black black);	   
	   vbar Smoking_Status / response=weight group=bp_status grouporder=data groupdisplay=stack fillattrs=(color="white") 
	   				   outlineattrs=(color="black") fillpattern;
	   keylegend / position=bottom title="Bottom TItle 1";
	   yaxis grid label="Number of tiles";
	   xaxis display=(nolabel) discreteorder=data valueattrs=(size=7);
	   
refline 'Non-smoker' /axis=x  transparency=1 label='Mar20*' labelpos=max labelattrs=(color=red weight=bold);
	run;

Ksharp_0-1643436263873.png

 

GraphGuy
Meteorite | Level 14

Here's how to do it with annotate ...

 

data indata; set sashelp.stocks (where=(year(date)=2005));
run;
proc sort data=indata out=indata; 
by date;
run;

proc sql noprint;
create table my_anno as
select unique date, sum(volume) as total_volume
from indata
group by date;
quit; run;

data my_anno; set my_anno;
length label $100 anchor x1space y1space textweight $50;
layer="front";
function="text"; textcolor="red"; textsize=10; textweight='bold'; anchor='bottom'; 
width=100; widthunit='percent'; 
if date='01apr2005'd then label="April Fools!"; 
x1space='datavalue';
y1space='datavalue'; 
x1=date;
y1=total_volume;
run;

proc sgplot data=indata sganno=my_anno;
vbar date / response=volume group=stock grouporder=data groupdisplay=stack;
keylegend / position=bottom title="Bottom TItle 1";
yaxis grid label="Total Volume of Stock Traded";
xaxis display=(nolabel) discreteorder=data valueattrs=(size=7);
run;

bar_anno.png

sas-innovate-2026-white.png



April 27 – 30 | Gaylord Texan | Grapevine, Texas

Registration is open

Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 3 replies
  • 2604 views
  • 2 likes
  • 4 in conversation