Plot multiple errorbars in pairs
23 次查看(过去 30 天)
显示 更早的评论
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
0 个评论
采纳的回答
Adam Danz
2019-9-24
编辑:Adam Danz
2021-12-10
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
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Errorbars 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!