条形图与Scilab中的错误栏

时间:2017-08-17 08:32:01

标签: plot statistics scilab

我正在尝试找到一种在条形图上包含错误条的方法。可悲的是,我只能找到正常2d图的误差线。一个非常草率的方式,我试图解决它:

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)

但这并没有向我显示下边界(而且看起来不太好)

2 个答案:

答案 0 :(得分:1)

您仍然可以在条形图上使用errbar()。如果您查看bar()的工作原理,则会分别绘制y的每一列,然后将它们移到水平轴的右侧或左侧。

为此,您需要检索每个集合的移动量,并将该值添加到x的{​​{1}}输入中。要获得result like this,您可以使用以下代码(在提问者注释后更新):

errbar()

答案 1 :(得分:0)

@luispauloml 感谢您的回答。在实现它时,我发现了一个小错误。在for循环中,你必须使用y的大小而不是x。它只是起作用,因为y恰好是一个方阵。我把y做了一行,并将偏差改为y的相同值,看看是否以正确的方式定义了矩阵,我不会混淆这些值。

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