2

我正在尝试将标签添加到具有许多条形的条形图中。复杂的因素是我在一个循环中执行此操作(对于数百个条形图)并且希望让 Matlab 自动进行标记。本质上,我只想标记高度高于某个阈值的峰。希望让这更容易的一件事是,我只是想用它的 x 值标记条。

这是我希望如何放置标签的说明:

4

2 回答 2

2

如果您仍然可以访问原始数据,并假设您想要标记高于阈值的每个点,您应该能够通过以下方式执行此操作:

  • 循环遍历图表数据数组中的每个 (x, y)
    • 如果 y 大于阈值
      • 然后打电话text(x, y, num2str(x))

如果您想用单个标签标记连续值都高于阈值的峰值(比如图像上大约 115?),您可以添加一些稍微复杂的逻辑来将这些峰值组合在一起......如果那是你想要的,我们可以帮助您解决这个问题。

于 2012-05-09T18:52:37.670 回答
2

正如@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])

在此处输入图像描述

于 2012-05-09T22:00:45.830 回答