gpt4 book ai didi

matlab - 如何将(值的)标签添加到我的 MATLAB 图的顶部?

转载 作者:行者123 更新时间:2023-12-01 15:37:55 25 4
gpt4 key购买 nike

在使用 hist 命令后,我在 MATLAB 中使用 plot 命令在数据集上“手动”创建直方图(我可以在其中分配命令的输出到两个矩阵)手动获取计数和中点。我真正想做的是在直方图的每个条形上方添加一个标签,说明该列的中心点值。因为我已经有了一个包含所有这些中心值的向量,所以我的问题在于弄清楚如何实际创建标签并将它们放置在每个条形图上方。在添加这些方面的任何帮助将不胜感激!

到目前为止我尝试了什么:

根据另一篇 StackOverflow 帖子,我看到了这样一条命令

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

我的想法是我可能在循环中使用 text 命令在每个条上方放置一个标签,但是当我试图将上面的 text 命令修改为在我拥有的数据中,我看不到绘图上的标签。

最佳答案

您确实可以将示例与 text 一起使用, 但略有改善。

text(x, y, 'a string') 将文本字符串放在图形上点 (x, y) 的位置。在您的示例中,x 坐标没问题(条的中心),但每个 y 坐标的高度是相应条的两倍。这可能会使文本字符串位于图形边界之外。

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

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

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

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

这是你应该得到的:

histogram

此处每个标签都放置在相应条形 y 轴上方 0.4 个刻度处),与条形中心(x 轴)的偏移量为 -0.2 个刻度。

请注意,我还将字体大小减小到 8,以便每个标签都能很好地适应每个栏的宽度。当然,您可以使用 text 的不同属性来根据自己的喜好对齐标签。

关于matlab - 如何将(值的)标签添加到我的 MATLAB 图的顶部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12501432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com