Add error bars in bar graph
65 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Luana Machado Simao
le 14 Jan 2020
Modifié(e) : Adam Danz
le 10 Déc 2021
Hi! I am trying to add the error bars in my chart but I do not know how to do it...
>> y = [9862.5 5238 3845.2; 9368.6 3515 3625.7; 11064 6810 4073.6; 12599.2 5701 3955.3; 10114.4 5683 3664.5];
>> b = bar(y,'FaceColor', 'flat');
>> set (gca, 'XTickLabel',{ 'Pronghorn', 'Settler CL', 'Robidoux', 'LCS Chrome', 'Warhorse'})
>> for k = 1:size(y,2)
b(k).CData = k;
end;
this is the code for my chart.
And these are the std error:
1699.5 , 612.157 , 548.048
Thank you!
2 commentaires
Réponse acceptée
Adam Danz
le 14 Jan 2020
Modifié(e) : Adam Danz
le 10 Déc 2021
Here's a demo you can follow to add error bars to a grouped bar chart.
To center the errorbar on each bar, you need to compute their center points along the x axis.
In Matlab R2019B or later the bar center points are stored in
h = bar(__);
h.XEndPoints % x centers
Required inputs are
- count: an n x m matrix that will produce n groups each containing m bars.
- err: an n x m matrix that defines the error for each bar
% Create bar data
count = [9862.5 5238 3845.2; 9368.6 3515 3625.7; 11064 6810 4073.6; 12599.2 5701 3955.3; 10114.4 5683 3664.5];
% Create error data (using random data for this demo)
err = (rand(size(count))+2)*100;
% Plot bars
figure;
h = bar(count);
% Get x centers; XOffset is undocumented
xCnt = (get(h(1),'XData') + cell2mat(get(h,'XOffset'))).';
% Add errorbars
hold on
errorbar(xCnt(:), count(:), err(:), err(:), 'k', 'LineStyle','none')
% or
% errorbar(xCnt(:), count(:), err(:), 'LineStyle','none')
Alternatively, if you're working with error intervals that define the upper and lower bounds of error,
Required inputs are
- count: an n x m matrix that will produce n groups each containing m bars.
- errUpperBound: an n x m matrix that defines the upper bound of error for each bar
- errLowerBound: an n x m matrix that defines the lower bound of error for each bar
% Create bar data
count = [9862.5 5238 3845.2; 9368.6 3515 3625.7; 11064 6810 4073.6; 12599.2 5701 3955.3; 10114.4 5683 3664.5];
% Create upper and lower error bounds
errUpperBound = count + 200;
errLowerBound = count - 100;
% Compute the error distance in the neg & pos directions
errNeg = count - errLowerBound;
errPos = errUpperBound - count;
% plot error bar
errorbar(xCnt(:), count(:), errNeg(:), errPos(:), 'k', 'LineStyle','none')
4 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Data Distribution Plots dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!