如何在MATLAB图的顶部添加标签(值)?

Dev*_*vin 2 matlab plot

plot在使用hist命令(我可以将命令的输出分配给两个基质)后,使用数据集上的命令在MATLAB中"手动"创建直方图,以手动获取计数和中点.我真正喜欢做的是在我的直方图上的每个条形图上方添加一个标签,说明该列的中心点值.由于我已经有一个包含所有这些中心值的向量,我的问题在于弄清楚如何实际创建标签并将它们放在每个条形图上方.任何帮助添加这些将非常感谢!

我到目前为止所做的一切:

基于另一个StackOverflow帖子,我看到了这些命令

for b = 1:nBins
    text(bins(b),counts(b)*2,num2str(a(b==binIdx,1)),'VerticalAlignment','top')
end
Run Code Online (Sandbox Code Playgroud)

我认为我可能text在循环中使用命令在每个条形图上方放置一个标签,但当我尝试将text上面的命令修改为我所拥有的数据时,我无法在我的图上看到标签.

Eit*_*n T 10

你确实可以使用这个例子text,但略有改进.

text(x, y, ' a string')将文本字符串放在图形上的点(x,y)的位置.在您的示例中,x-coordiantes是正常的(条形的中心),但每个y-coordiante的高度是相应条形的两倍.这可能会将文本字符串放在图形的边界之外.

我建议你先做的是按以下方式设置y轴,以便为新文本标签留出一些额外的空间:

ylim([0, max(counts) * 1.2]);  %# The 1.2 factor is just an example
Run Code Online (Sandbox Code Playgroud)

然后你使用你问题中的示例代码,如下所示:

A = fix(10 * rand(30, 1)) + 1; %# Randomize 30 samples between 1 and 10
[counts, bins] = hist(A);      %# Compute the histogram
figure, bar(bins, counts),     %# Plot the histogram bars
ylim([0, max(counts) * 1.2]);  %# Resize the y-axis

%# Add a text string above each bin
for i = 1:numel(bins)
    text(bins(i) - 0.2, counts(i) + 0.4, ['y = ', num2str(counts(i))], 'VerticalAlignment', 'top', 'FontSize', 8)
end
Run Code Online (Sandbox Code Playgroud)

这是你应该得到的:

直方图

这里每个标签在相应的条y轴上方0.4个刻度处,在距离条中心(x轴)偏移-0.2刻度处.

请注意,我还将字体大小减小到8,这样每个标签都能很好地适应每个条形的宽度.当然,您可以使用不同的属性text来根据自己的喜好调整标签.