2017-08-17 61 views
0

棒グラフにエラーバーを含める方法を見つけようとしています。悲しいことに、私は通常の2次元プロットのエラーバーしか見つけることができませんでした。本当にずさんな方法は、私はそれを修正しようとした:Scilabのエラーバーを含む棒グラフ

close(); 

x=[2, 4, 8]; 
y=[0.2 0.12 0.06; 0.17 0.22 0.05; 0.19 0.20 0.07]; 
dev=[0.08 0.08 0.03; 0.03 0.05 0.02; 0.04 0.06 0.02]; 

bar(x, (y+dev), 'w--') 
bar(x, y) 

しかし、それは私の下限を示していない(そして、それが良い見ていない)

答えて

0

あなたはまだあなたの棒グラフの上にerrbar()を使用することができます。 bar()の仕組みを見ると、yの各列が別々にプロットされ、水平軸の右または左にシフトされます。

これを実行するには、各セットがどのくらいシフトされたかを取得し、その値をのx入力に追加する必要があります。あなたの答えのための

x=[2, 4, 8]; 
y=[0.2 0.12 0.06; 0.17 0.22 0.05; 0.19 0.20 0.07]; 
dev=[0.08 0.08 0.03; 0.03 0.05 0.02; 0.04 0.06 0.02]; 
bar(x,y) 

//get the entity handler 
e=gce(); 

//loop over the entity to retrive x_shift values 
for i = 1:length(y,'c') 
    x_shift(i,:) = e.children(i).x_shift; 
end 

//flip x_shift vertically 
x_shift = x_shift($:-1:1,:); 

//plot the error bars 
for i = 1:length(y,'c') 
    errbar(x + x_shift(i), y(:,i)', dev(:,i)', dev(:,i)'); 
end 
0

@luispauloml ありがとう:result like thisを取得するには、(アスカー者注後に更新)次のコードを使用することができます。それを実装している間、私は小さなエラーを発見しました。 for-loopsでは、xではなくyのサイズを使用する必要があります。 yは正方形の行列であったため、うまくいきました。私はyを1行大きくし、yの同じ値に偏差を変更して、matrizesが正しい方法で定義されているかどうかを確認し、値を混ぜ合わせません。

x=[2; 4; 8]; 
y=[0.2 0.12 0.06 0.1; 0.17 0.22 0.05 0.1; 0.19 0.20 0.07 0.1]; 
dev=[0.2 0.12 0.06 0.1; 0.17 0.22 0.05 0.1; 0.19 0.20 0.07 0.1]; 

bar(x,y) 

//get the entity handler 
e=gce(); 

//loop over the entity to retrive x_shift values 
for i = 1:size(y,'c') 
    x_shift(i,:) = e.children(i).x_shift; 
end 

//flip x_shift vertically 
x_shift = x_shift($:-1:1,:); 

//plot the error bars 
for i = 1:size(y,'c') 
    errbar(x + x_shift(i), y(:,i)', dev(:,i)', dev(:,i)'); 
end 
関連する問題