3

我需要在 MATLAB 中简单地绘制BA条形图,但我不希望我的 x 轴完全显示从 1 到 274。我只需要在我的 x 轴上显示现有数据点,这可以在 Excel 中轻松完成如下图所示。MATLAB 如何做到这一点?

在此处输入图像描述

A=[1    2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  18  20  25  27  29  37  40  42  43  48  73  204 242 274];
B=[30   15  5   9   5   6   3   3   2   1   4   1   1   1   1   1   2   1   1   1   1   1   1   1   1   1   1   1   1   1];
4

2 回答 2

1

对于您的问题,这是一个不优雅但有效的解决方案:

x = [1,4, 6, 7]; % Your data
uni = unique(x)
yMax = length(find(x == mode(x))) + 1;
c = cell(1, length(uni));

c = strread(num2str(uni),'%s')

hist(1:length(uni));
axis([0 length(uni) 0 yMax])
set(gca, 'XTick', 1:length(uni));
set(gca, 'XTickLabel', c);

基本上,这绘制了直方图,就好像数据从 1 扩展到唯一元素的数量一样。然后,它在每个直方图值处设置刻度线。然后,它用正确的数字标记每个刻度线。

于 2013-10-24T19:25:53.357 回答
1

您需要同时设置'XTick''XTickLabel'轴属性:

bar(B);
set(gca,'XTickLabel',A)
set(gca,'XTick',1:numel(A));
xlim([0 numel(A)+1]);
于 2013-10-24T20:38:48.583 回答