MATLAB: How to put error bars on top of grouped bars

bar grapherror barindividual error barMATLABundocumented

Best Answer

A few tweaks of your code Assuming R2014b or later):
y1 = [2.194 2.145 2.126 2.115
2.01 2.098 2.136 2.136
2.1 2.105 2.111 2.115
2.155 2.133 2.187 2.192];
err1=[0.002 0.004 0.011 0.005
0.019 0.006 0.003 0.008
0.008 0.007 0.011 0.007
0.013 0.016 0.013 0.019];
hBar = bar(y1,1); % Return ‘bar’ Handle
for k1 = 1:size(y1,1)
ctr(k1,:) = bsxfun(@plus, hBar(1).XData, hBar(k1).XOffset'); % Note: ‘XOffset’ Is An Undocumented Feature; This Selects The ‘bar’ Centres
ydt(k1,:) = hBar(k1).YData; % Individual Bar Heights
end
hold on
errorbar(ctr, ydt, err1, '.r') % Plot Error Bars
hold off
ylim ([1.8 2.4])
title('Hardened density')
grid on
grid minor
legend ('CON','MK20','nS1','nC1','location','NW')
xlabel('Mortar Type') % x-axis label
ylabel('Density (g/m^3)') % y-axis label
set(gca,'XTickLabel',{'NF','SFI','SFII','SC-M'})
produces: