我想得到:一个不错的组图条形图。我喜欢这样的每个栏上的错误栏(或由您自行决定的类似):
我有手段:
ff =
Medical eq Patient Hygiene Near bed Far bed
Direct 1.2759 0.9253 0.6092 1.0460 1.3276
Housekeeping 1.0833 0.2500 0.5833 2.1667 1.3333
Mealtimes 0 0.3000 0.7000 1.4500 0.5000
Medication 0.3694 0.7838 0.8919 1.5495 1.0541
Misc 0.1059 0.1294 0.4118 0.8000 0.8353
Personal 0.0370 0.4074 0.8148 1.2593 0.7037
标准偏差
ee =
2.0411 1.1226 0.8378 1.5007 1.3776
1.3114 0.4523 0.6686 2.4058 1.1547
0 0.7327 1.3803 2.1392 0.6070
0.7499 0.9186 1.0300 1.2844 1.3062
0.4371 0.3712 0.7605 1.0212 0.6699
0.1925 0.6939 1.6417 3.5582 1.5644
相反,我得到了这个:
使用:
bb=bar(ff'); hold all
data=repmat([1:6]'*ones(5,1)',1,1)
er=errorbar(data, ff, ee, '.')
我读过我必须找到每个酒吧的中心?太疯狂了!任何解决方法?
答案 0 :(得分:3)
每个酒吧的中心可以通过
获得x = get(get(h(i),'children'),'xdata');
barsx=mean(x,1);
barsx给出每个条形子集的每个第i个元素的中心。
h=bar(bars)
for i=1:6
x = get(get(h(i),'children'),'xdata');
barsx(1:6,i)=mean(x,1)
end
hold all
h=errorbar(barsx,bars,barsvar)
让错误具有与bar相同的颜色:
figure()
h=bar(bars)
col=[0 0 1;0 1 0;1 1 0; 1 1 1; 0 0 0; 0 1 1];
colormap([0 0 1;0 1 0;1 1 0; 1 1 1; 0 0 0; 0 1 1])
hold all
for i=1:6
x = get(get(h(i),'children'),'xdata')
barsx=mean(x,1)
h1=errorbar(barsx',bars(1:6,i),barsvar(1:6,i),'color',col(i,:))
set(h1,'linestyle','none')
end
答案 1 :(得分:2)
真的不是那么疯狂!
您可以将errorbar
与您现有的数据一起使用。
此代码计算正确的位置,为每个组添加1,为组内的每个栏添加1/7。
for i = 1:5
j = 1:6;
x = -0.5 + i + 1/7 * j;
errorbar(x, ff(j,i), ee(j,i), '.');
end
结果:
(不用标签,但这看起来和你想要的非常相似)