3

私が取得しようとしているのは、グループの素敵な棒グラフです。このような (またはあなたの裁量で同様の) 各バーのエラー バーが欲しいです。

ここに画像の説明を入力

私には手段があります:

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

標準偏差

ええ=

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, '.')

各バーの中心を見つける必要があると読みましたか? それはクレイジーです!回避策はありますか?

4

2 に答える 2

3

各バーの中心は次のように取得できます

x = get(get(h(i),'children'),'xdata');
barsx=mean(x,1);

barx は、すべてのバー サブセットのすべての 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)

バーと同じ色のエラーを表示するには:

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
于 2013-11-28T14:29:50.963 に答える
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

結果:

ここに画像の説明を入力

(ラベルを省略しますが、それ以外は探していたものとかなり似ているようです)

于 2013-03-30T11:17:09.960 に答える