Error Bars on horizontal bar chart
Show older comments
Hi.
I am trying to produce a horizontal bar chart with error bard, but the error bars minimum value seem completely wrong. Also, the positions of the vertical 'ends' of each error bar appear to be in the wrong position. What am I doing wrong?
Here is the code that produced this chart below:
% data
min = [1e-4 1e-3 1e-2 1e-1 1e1];
mean = [1e-3 1e-2 1e-1 1e1 1e2];
max = [1e-2 1e-1 1e1 1e2 1e3];
cats = categorical({'a','b','c','d','e'});
% plot horizontal bars
figure; hold on;
p = barh(cats,mean,...
'FaceColor',[0.75,0.75,0.75],...
'EdgeColor','k',...
'LineWidth',1.5,...
'BaseValue',1);
baseline = p.BaseLine;
% change xscale to 'log'
ax = gca;
ax.XScale = 'log';
baseline.LineWidth = 1.5;
% add y tick labels
ax.YTickLabel = {'cat a','cat b','cat c','cat d','cat e'};
% plot error bars
er = errorbar(mean,cats,min,max,'.','horizontal');
er.LineWidth = 1.5;
er.Color = 'k';
er.MarkerSize = 1;

3 Comments
The error bars are being draw accurately according to your data. The left and right columns below are the distance of the lower or upper error bar from the value in the middle column. Your 'mean' values are nowhere near centered in those ranges.
>> [min', mean', max']
ans =
0.0001 0.001 0.01
0.001 0.01 0.1
0.01 0.1 10
0.1 10 100
10 100 1000
From doc errorbar: errorbar(x,y,neg,pos) draws a vertical error bar at each data point, where neg determines the length below the data point and pos determines the length above the data point, respectively.
Glaucia Fragoso
on 22 Apr 2022
I don't know how you did this... when I try I get an error "X-data must be the same size as Y-data"
The error message tells you what's wrong. Your x-data must be the same size as your y-data.
x = 1:5;
y = 1:6;
e = 1:6;
errorbar(x,y,e)
Accepted Answer
More Answers (0)
Categories
Find more on Errorbars in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!