7

是否有任何直接的方法可以从像下面这样的单元格数组创建直方图?连续条之间的间距应该完全相同,并且 x 轴的标签应该是垂直方向下面变量的对应名称。

'w464'
'w462'
'w461'
'w464'
'w461'
'w463'
'w466'
'w461'
4

4 回答 4

9

我也想知道更好的方法。Fwiw,我以迂回的方式使用countmember来绘制这样的数据。IE 如果您发布的数据被命名A

>> B={sort(unique(A)) countmember(sort(unique(A)),A)};
>> bar(B{2});
>> set(gca,'XTickLabel',B{1})
于 2012-08-15T10:11:57.317 回答
5

如果您可以访问统计工具箱,grp2idx则非常有用:

%# sorting is only necessary if the output should be sorted as well
[idx,label] = grp2idx(sort(A)) 

hist(idx,unique(idx));
set(gca,'xTickLabel',label)
于 2012-08-16T12:55:58.283 回答
3

仅使用内置函数的解决方案

[u,~,n] = unique(A(:));
B = accumarray(n, 1, [], @sum);
bar(B)
set(gca,'XTickLabel',u)
于 2013-07-01T16:09:12.927 回答
2

您还可以使用直方图函数,如下所示:

[C,~,ic] = unique(A);

fig1 = figure;
axes1 = axes('Parent',fig1,'XTickLabel',C,'XTick',1:length(C));
hold(axes1,'on');

histogram(ic)
于 2015-04-17T13:36:28.143 回答