如何确定条形图中条形的位置?

How to determine the locations of bars in a bar plot?

我在查找具有多个条形的 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);

我得到以下情节

现在我想在那个情节中添加一些东西,例如错误栏、文本等。因此,我想知道各个栏的确切位置。

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

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

这些值是条形的 x 和 y 值

你走在正确的轨道上

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