我正在尝试找到一种在条形图上包含错误条的方法。可悲的是,我只能找到正常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)
但这并没有向我显示下边界(而且看起来不太好)
答案 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