1

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

谢谢

4

2 回答 2

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,或类似的东西。除此之外,请参阅Eitan 的这个答案,以获取一些提示和技巧。

于 2013-09-17T11:45:21.770 回答
1

这是一些从文件(带有条形系列)中获取Y数据的代码.fig,然后显示相应的文本。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' );
于 2013-09-17T12:45:13.840 回答