2017-08-30 34 views
2

我遇到了一个问题,需要找到具有多个条的MATLAB条形图的确切位置。使用下面的代码如何确定条形图中条形的位置?

A =[2.1974e-01 4.1398e-01 1.0889e-01 3.3550e-01; 
    4.2575e-01 5.2680e-01 2.3446e-01 9.7119e-02; 
    2.5702e+00 2.5594e+00 3.2481e+00 9.9964e-01]; 
b=bar(A); 

我得到以下情节

bar plot with multiple bars

现在我想的东西添加到情节,例如错误栏,文本等。出于这个原因,我想知道单个酒吧的确切位置。

我可以使用b(1).方案访问各个物业,但我不知道哪个物业属于酒吧位置。我如何得到每个单独酒吧的确切位置?

回答

2

你在正确的轨道与

b = bar(A); 

属性上你所需要的具体性能

  1. b.XOffset各组之间的间距
  2. b.XData各组条形指数
  3. b.YData每个条

对于每个条的顶部的y坐标的高度,可以简单地级联这些`b.YData值。

yb = cat(1, b.YData); 

对于x坐标,你需要添加偏移给指数

xb = bsxfun(@plus, b(1).XData, [b.XOffset]'); 

现在,您的每个栏的顶部位置。这是一个错误栏示例。

figure; 
bar(A) 
hold on; 
for ii = 1:length(xb(:)) 
    plot([xb(ii), xb(ii)], [yb(ii)-0.1 yb(ii)+0.1], 'xk-') 
end 

Error bars on bar plot

-1

您可以使用图形属性查看器来识别条形件的属性。试一试并改变一些值。然后你可以访问这些属性并使用set函数。

的值是酒吧的x和y的值

+0

请详细说明这个答案,因为它是相当模糊的,在这一点上。请添加屏幕截图,显示点击哪些按钮以及显示数字的位置。更好的是:增加一种方式来以编程方式完成这个任务,以免每次都手动复制数字。 – Adriaan

+0

好主意,虽然我再也找不到合适的变量。关于X轴的唯一相关信息似乎是 'X Data Source = auto'这并没有帮助 – madn

+0

超过@Adriaan评论,这个答案是错误的,因为使用数字属性将给每个相同的x值酒吧在一个特定的组。 – Adiel

相关问题