Scilab 中带有误差条的条形图

Bar diagram with error bars in 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)

但这并没有告诉我下边界(而且看起来不太好)

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

为此,您需要检索每组移动了多少并将该值添加到 errbar()x 输入中。要获得 result like this,您可以使用以下代码(根据提问者的说明更新):

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

@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