Code covered by the BSD License

### Highlights from Bar with errorbars

4.85714
4.9 | 7 ratings Rate this file 35 Downloads (last 30 days) File Size: 1.77 KB File ID: #24718 Version: 1.3

# Bar with errorbars

### Venn Ravichandran (view profile)

13 Jul 2009 (Updated )

This code plots bars with errorbars, as simple as that.

File Information
Description

As of now (2009-Jul-13), MATLAB doesn't have a built-in function to plot bars with with error bars on top of them. This function solves that problem.

To a beginning user, this provides a very simple way of plotting bar with errorbars with a simple command:
errorbarbar(y,e); % where y is the height of the bars and e is the limit to plot as error bars (of length 2*e, about y).

For an intermediate user, this function provides the handles to the BAR and ERRORBAR lines for further modification.
[b,e] = errorbarbar(y,e); % or ...
[b,e] = errorbarbar(x,y,e); % where x is center location of the group of bars

For an advanced user, this function also provides ways to modify any and all of the bar and line series properties while plotting it in the first place.

Example:
barSettings = {'facealpha',0.5,'edgecolor',[0.5 0.5 0.5]};
lineSettings = {'linestyle','--','linewidth',2};
[b,e] = errorbarbar(x,y,e,barSettings,lineSettings);
set(b,'facecolor',[0 0.5 0]); % set all bars to color green

Hint: You can use the lineSettings variable to use distinct upper and lower limits.

What it DOESN'T do:
1. Plot horizontal bar graphs
2. Work with bar(y,e,barSettings,lineSettings). Instead, use:
bar(x,y,e,barSettings,lineSettings).

Acknowledgements

This file inspired Superbar.

MATLAB release MATLAB 7.5 (R2007b)
Other requirements Because of the way this function is written, it should be backwards/upwards compatible, as long as BAR and ERRORBAR functions are consistent with R2007b.
14 Mar 2016 David Jule Mack

### David Jule Mack (view profile)

Replace the third cell by the following code and it will work:

%% get the xdata to plot the error plots
drawnow();
c = get(b,'Children');
if iscell(c) && all(~cellfun(@isempty,c))
for i = 1:length(c)
xdata(:,i) = mean(get(c{i},'xdata'));
tempYData = get(c{i},'ydata');
ydata(:,i) = mean(tempYData(2:3,:))';
end
elseif length(b) > 1
for i = 1:length(b)
xdata(:,i) = b(i).XData+b(i).XOffset;
ydata(:,i) = b(i).YData;
end
else
xdata = mean(get(c,'xdata'));
tempYData = get(c,'ydata');
ydata = mean(tempYData(2:3,:))';
end

Comment only
14 Mar 2016 David Jule Mack

### David Jule Mack (view profile)

Works perfectly with previous ML builds. However, since the plotting change in R2013(?), BAR is not implemented as a patch object anymore and thus there are no children for the computation of the mean X position. This causes the error for grouped bars.

17 Sep 2015 Wenxin Xu

### Wenxin Xu (view profile)

I have the same question with Naman... Thx!

08 Nov 2014 Naman Deep Singh

### Naman Deep Singh (view profile)

06 Nov 2014 Naman Deep Singh

### Naman Deep Singh (view profile)

Say i have a data matrix (d) of 3X4, and associated error matrix (e) of 3X4 . I want to make a stacked bars of all rows with error bars given in the error matrix. I would very obliged if you could illustrate the very case using an example.

Thanks ! :)

Comment only
04 Apr 2013 a

### a (view profile)

19 Jan 2013 Right Grievous

### Right Grievous (view profile)

Really good piece of code. However, is it possible to colour one of the bars differently to the others (i.e as you would do using (set(h(1),'FaceColor','r') on a normal Matlab bar plot?

I have tried but it just colours them all the same...

Comment only
03 Jul 2012 Min Liu

### Min Liu (view profile)

Excellent tool. Thx!

16 Dec 2011 Xiaohui Liu

### Xiaohui Liu (view profile)

Other error bars I find cannot deal with asymmetric error bounds. This one works like a charm.

19 Oct 2011 Shatrughan

### Shatrughan (view profile)

19 Oct 2011 Venn Ravichandran

### Venn Ravichandran (view profile)

x = 1:10; % x-axis
y = rand(10,2); % bar-heights
L = rand(10,2)*0.01; % Lower limit
U = rand(10,2)*0.03; % Upper limit
barSettings = {};
lineSettings = {U, 'linestyle', 'none'};
errorbarbar(x, y, L, barSettings, lineSettings);

Comment only
19 Oct 2011 sinoTrinity Liu

### sinoTrinity Liu (view profile)

"Hint: You can use the lineSettings variable to use distinct upper and lower limits."
Can you give me an example? I need to draw asymmetric error bounds. Thanks.

Comment only
07 Jun 2011 Shatrughan

### Shatrughan (view profile)

Thanks a lot !!

Comment only
03 Jun 2011 Venn Ravichandran

### Venn Ravichandran (view profile)

@Shatrughan: errorbarbar(1:5, rand(5,2)*10, rand(5,2),{'stacked'});

Comment only
02 Jun 2011 Shatrughan

### Shatrughan (view profile)

It is not as simple as you said. Would you mind putting up an illustrative example (especially for stacked bar plot). I would really appreciated it.

Thanks,
Shatrughan

Comment only
14 Jul 2009 1.1

Changed a bug which caused the program to give an error if either the barSettings or lineSettings was empty.

15 Jul 2009 1.2

Now works with stacked bars as well.

22 Jun 2011 1.3

Error bars no longer have legends of their own. If you want them back on, then comment out line 63 :)