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 2025: Call for Content

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!

Submit your idea!

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
  • 3 replies
  • 1281 views
  • 2 likes
  • 4 in conversation