BookmarkSubscribeRSS Feed
☑ This topic is solved. Need further help from the community? Please sign in and ask a new question.
davehalltwp
Quartz | Level 8

Somebody wants standard error bars added to a histogram.  I am hoping just to modify my PROC SGPLOT to add.

 

I thought it would be simple -- just add yerrorlower= yerrorupper = after the slash on the VBAR statement.  But apparently VBAR doesn't like those.

 

Then I tried a separate SCATTER statement with the error bars.  But again, I got this red error message:

ERROR: Attempting to overlay incompatible plot or chart types.

 

So, can I do a histogram with these bars?  I see pictures of them, so I know the idea isn't insane:

davehalltwp_0-1695256749384.png

 

Any ideas?  Thank you.  Here is my code (with the failed SCATTER statement left in. prior to that I tried yerrorlower= yerrowupper= after the slash on the VBAR statement).

 

proc sgplot data = adcv4 noautolegend;
     where paramcd = 'LVMASSIX';
     vbar tx / group = tx 
               datalabel = txtext 
               datalabelpos=top
               datalabelattrs = (color=black family="courier new" size=11 weight=bold) 
               filltype=solid outlineattrs=(color='black') response=meanchg;

scatter x=tx y=meanchg / yerrorlower=lower                                                                                            
                           yerrorupper=upper;

     styleattrs datacolors=(viypk vligb);
     xaxis label = '   ' 
	       display = (noticks novalues)
           offsetmin = .3 offsetmax = .3;
     yaxis label = 'Mean Percent'
	       labelattrs    = (family = "courier new" size = 10 pt color = black weight = bold)
           values = (-2 to 8 by 2);
     run; 

 

1 ACCEPTED SOLUTION

Accepted Solutions
Rick_SAS
SAS Super FREQ

See the section "Bar charts for pre-summarized data" in the article "Creating bar charts with confidence intervals."

See also the end of the article, which suggests using a dot plot or scatter plot instead.

View solution in original post

7 REPLIES 7
DanH_sas
SAS Super FREQ

You'll want to use the VBARPARM statement instead of the VBAR statement to put your own limit variables on the bar chart. The VBAR statement can display only the limits it calculates (CLM, STDERR, STDDEV), whereas you can specify your own custom LIMITUPPER/LIMITLOWER with the VBARPARM statement. 

ballardw
Super User

Because of internal reasons some plots are not compatible with others. If you want to overlay a Scatter plot on vertical bar chart then use VBARBASIC instead of Vbar.

Rick_SAS
SAS Super FREQ

See the section "Bar charts for pre-summarized data" in the article "Creating bar charts with confidence intervals."

See also the end of the article, which suggests using a dot plot or scatter plot instead.

davehalltwp
Quartz | Level 8

Hi Rick,

 

I had a lot of success with this just now.  I'm getting my SE bars, and still have the DATALABEL at the top.  (I just need to find the syntax to set the error bars black in this situation; it seems different than other situations in which I've done that).

 

Unfortunately, without the "GROUP=" , I am no longer getting the two different colors for the two groups.  But if I add "GROUP =", the error bars go away.  Ugh, I need to do something else for a living.    Thank you...

 

(current code)

proc sgplot data = /*adcv4*/ adcv0 noautolegend;
     where paramcd = 'LVMASSIX';

     vbar tx / response = pchg stat = mean limitstat = stderr
               datalabel = txtext datalabelpos=top
               datalabelattrs = (color=black family="courier new" size=11 weight=bold) 
               filltype=solid outlineattrs=(color='black');

     styleattrs datacolors = (viypk vligb);

     xaxis label = '   ' 
	       display = (noticks novalues)
           offsetmin = .3 offsetmax = .3;
     yaxis label = 'Mean Percent'
	       labelattrs    = (family = "courier new" size = 10 pt color = black weight = bold)
           values = (-4 to 12 by 2);

     run; 

 

(current output)

davehalltwp_0-1695301093327.png

 

 

DanH_sas
SAS Super FREQ

Add GROUPDISPLAY=CLUSTER to the VBAR statement to get your error bars back.

davehalltwp
Quartz | Level 8
Thank you so much, DanH...

SAS Innovate 2025: Save the Date

 SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!

Save the date!

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
  • 7 replies
  • 2267 views
  • 9 likes
  • 5 in conversation