Hi again,
I have plotted some errorbars using the commands you suggested in my previous question:
x=1; y=8.35;
sd=4.13;
bar(x,y);
hold on
errorbar(x,y,sd)
ylim([0 14])
xticks([0:2])
hold off
However, I am trying to do the same with a pair of graphs, so in each number there are two bars instead of 1. I modified the code like this:
error=[3.3 2.1;1.1 4];
x=[1:2 ;1:2]';
y=[3.5 2.2; 5.2 3.3];
bar(x,y)
hold on
errorbar(x,y,error,'*')
ylim([-8 18])
xticks([1:2])
hold off
The problem is that the error bars which show the deviation don't fit exactly at the barcharts. Do you know how to fix this?
I have attached a screenshot

 채택된 답변

Adam Danz
Adam Danz 2019년 9월 24일
편집: Adam Danz 2021년 12월 10일

2 개 추천

To locate the center of each grouped bar in Matlab releases prior to R2019b, use the undocumented bar object property, "XOffset" which is the horizontal offset of each bar-center from the group index value. In R2019b and later, use XEndpoints.
xCnt are the bar centers.
error=[3.3 2.1;1.1 4];
x=[1:2 ;1:2]';
y=[3.5 2.2; 5.2 3.3];
h = bar(x,y)
hold on
% Get bar centers
xCnt = h(1).XData.' + [h.XOffset];
% Alternative: xCnt = get(h(1),'XData').' + cell2mat(get(h,'XOffset')).'; % XOffset is undocumented
% In Matlab R2019b and later,
% xCnt = vertcat(h.XEndPoints)';
errorbar(xCnt(:),y(:),error(:),'*') % <--- If you want 1 errorbar object
% errorbar(xCnt,y,error,'*') % <--- If you want separate errorbar objects, 1 for each bar-group
% errorbar(...,'k*') to make the errorbars black (which is better than yellow)
ylim([-8 18])
xticks([1:2])
hold off

댓글 수: 2

Nikolas Spiliopoulos
Nikolas Spiliopoulos 2019년 9월 24일
thanks a lot!!!
Adam Danz
Adam Danz 2019년 9월 24일
Glad I could help!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Errorbars에 대해 자세히 알아보기

질문:

2019년 9월 24일

편집:

2021년 12월 10일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by