Как определить расположение баров на гистограмме?

У меня есть проблема, чтобы найти точное местоположение гистограммы 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)., но я не знаю, какое свойство относится к позиции панели. Как узнать точное местоположение каждого отдельного бара?


person madn    schedule 30.08.2017    source источник


Ответы (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

Полосы погрешностей на гистограмме

person Cecilia    schedule 30.08.2017

Вы можете использовать средство просмотра свойств фигуры, чтобы идентифицировать свойства положения стержня. Попробуйте и измените некоторые значения. Затем вы можете получить доступ к свойствам и использовать функцию set.

Значения представляют собой значения x и y столбцов.

person M4rk0444    schedule 30.08.2017
comment
Пожалуйста, уточните этот ответ, так как на данный момент он довольно расплывчатый. Пожалуйста, добавьте скриншот, показывающий, какие кнопки нажимать и где отображаются цифры. Еще лучше: добавьте способ сделать это программно, чтобы не приходилось каждый раз вручную копировать числа. - person Adriaan; 30.08.2017
comment
хорошая идея, хотя я снова не смог найти нужную переменную. Единственная релевантная информация об оси x кажется X Data Source = auto, что не помогает - person madn; 30.08.2017
comment
Более того, прокомментировал @Adriaan, этот ответ неверен, потому что использование свойств фигуры даст одно и то же значение x для каждого из столбцов в определенной группе. - person Adiel; 02.10.2017