Matlab: обнаружение пиков выше определенной высоты на гистограмме и маркировка чуть выше высоты пика

Я пытаюсь добавить метки к гистограмме со многими столбцами. Усложняющим фактором является то, что я делаю это в цикле (для сотен гистограмм) и хочу, чтобы Matlab делал маркировку автоматически. По сути, я хочу помечать только пики высотой выше определенного порога. Одна вещь, которая, надеюсь, должна упростить это, заключается в том, что я просто хочу пометить полосу ее значением x.

Вот иллюстрация того, как я хочу разместить метку:


person picomp    schedule 09.05.2012    source источник


Ответы (2)


Если у вас все еще есть доступ к исходным данным и если вы хотите пометить каждую точку, превышающую пороговое значение, вы сможете сделать это, выполнив следующие действия:

  • loop over each (x, y) in data array for the chart
    • if y is bigger than the threshold
      • then call text(x, y, num2str(x))

Если вы хотите пометить пики, которые имеют последовательные значения выше порогового значения (например, около 115 на вашем изображении?) одной меткой, вы можете добавить немного более сложную логику, чтобы сгруппировать эти пики вместе... если это то, что вы хотите , мы можем помочь вам разобраться в этом.

person Danica    schedule 09.05.2012

Как уже упоминал @Dougal, функция text - это то, что вам нужно. Однако нет необходимости зацикливаться:

%# generate some data
y = poissrnd(5,20,1);
x = 1:20;
%# find where the data is above the threshold
bigIdx = y>6;

%# create a bar plot
bar(x,y)

%# add the text. The alignment setting ensures that the text
%# is directly above the bar. I add 1 here as an y-offset,
%# the ideal value may depend on your data
text(x(bigIdx),y(bigIdx)+1,num2str(x(bigIdx)),'horizontalAlignment','center')

%# you may need to make sure that the y-limit is high enough
%# so that the text is visible
ylim([0 max(y)+2])

введите здесь описание изображения

person Jonas    schedule 09.05.2012
comment
Это также кажется хорошим решением и даже может быть более эффективным, но я уже реализовал решение Дугала, и оно хорошо работает для меня. Хотя я обязательно буду иметь это в виду. - person picomp; 11.05.2012