MATLAB: Error bars on grouped bar plots

errorbars barplot

Hi, I have this data:
PPdata = [960.6 960.3 960.4; 960.5 960.7 960.7];
PPerr = [0.4 0.4 0.5; 0.1 0.1 0.1];
PPx=categorical({'\it CL','\it DM'});
And I have to create a bar plot with error bars, I am using this code and it works for creating the bar plot
figure
bar(PPx,PPdata)
hold on
title('Peak position by region')
ylim([960.2 961.2]);
legend({'Cervical','Cuspal','Intercuspal'},'Location','southoutside')
But when I want to add the error bars (PPerr = [0.4 0.4 0.5; 0.1 0.1 0.1]), using:
errorbar(PPx,PPdata,PPerr);
this happens:
Error using errorbar>checkSingleInput (line 270)
XData must be the same size as YData.
And when I use:
errorbar(PPdata,PPerr);
This is the plot that appears:
What can I do?

Best Answer

Try this:
PPdata = [960.6 960.3 960.4; 960.5 960.7 960.7];
PPerr = [0.4 0.4 0.5; 0.1 0.1 0.1];
% PPx=categorical({'\it CL','\it DM'});
figure
hBar = bar(PPdata);
hBar(1).XData
hold on
for k1 = 1:size(PPdata,2)
ctr(k1,:) = bsxfun(@plus, hBar(k1).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, PPerr.', '.r')
PPx=categorical({'\it CL','\it DM'});
set(gca, 'XTickLabel', PPx)
title('Peak position by region')
ylim([960.2 961.2]);
legend({'Cervical','Cuspal','Intercuspal'},'Location','southoutside')
producing: