Matlab,柱状图数据值 - 条形图

Posted

技术标签:

【中文标题】Matlab,柱状图数据值 - 条形图【英文标题】:Matlab, histogram plot data-value of bar 【发布时间】:2013-09-17 11:30:52 【问题描述】:

我想在 matlab 的直方图中显示每个条形的值。我将所有绘图保存为 matlab .fig 文件。如何更改数字? 有什么想法吗?

谢谢

【问题讨论】:

How can I add labels (of values) to the top of my MATLAB plot? 和 How to display labels above a histogram bin? 的可能重复项 我建议将这篇文章的第二个问题作为一个单独的问题提出。我相信比你想知道的更多,如果问题有不同的标题会更容易找到。 @EitanT 谢谢,但我想更改保存的 .fig 文件。我认为我的问题与您提到的不同。 @Fatime 那么你的意思是你有 .fig 文件但没有生成它们的代码? 在我的回答之后进行了编辑。如果@EitanT 的问题的答案是肯定的,我相信最好单独问第二部分。 (恕我直言:就目前而言,标题具有误导性)。 【参考方案1】:

它可能并不完美,但它是一个开始:

x =rand(10,1);
bar(x(:,1));
text(1:10,x,num2str(x))

更新: 如果你想要一个直方图而不是条形图:

x =ceil(10*rand(30,1));
hist(x);
a = hist(x);

% This can most likely be done without a loop, but here goes:
for ii = 1:10
    text(ii,a(ii),num2str(a(ii)))
end

您可以通过在a(ii)+0.1 或类似的地方添加分配文本来抵消数字。除此之外,请参阅this answer by Eitan,以获取一些提示和技巧。

【讨论】:

【参考方案2】:

下面是一些代码,用于从.fig 文件(带有条形系列)中获取Y 数据,然后显示相应的文本。 Y 数据隐藏在当前axes 的子代中——我们需要应用两次get 命令。

%create figure
h = figure('Color','w');
x =rand(10,1);
bar(x(:,1));
set(gca,'XLim', [0 11], 'YLim', [0 1]);
saveas(h,'myfig.fig');
close(h);

%open figure, get the bar data, then text
open('myfig.fig');
xdata = get(get(gca,'Children'), 'xData')
ydata = get(get(gca,'Children'), 'YData')
text(xdata, ydata, num2str(ydata',2), 'HorizontalAlignment', 'Center', 'VerticalAlignment', 'Bottom' );

【讨论】:

以上是关于Matlab,柱状图数据值 - 条形图的主要内容,如果未能解决你的问题,请参考以下文章

arcgis条形图显示数字

Python matplotlib绘制条形柱状图并添加数据标签

如何使用MATLAB绘制极坐标堆叠柱状图

如何使用MATLAB绘制极坐标堆叠柱状图

R语言绘图——条形图/柱状图

可视化实验八:利用Python绘制柱状图条形图