分类直方图标签

时间:2018-04-22 20:11:24

标签: matlab histogram matlab-figure categorical-data

我创建了一个分类直方图:

h = histogram( categorical( emotions{startIndex:endIndex,:} ) )

h.Categories
ans =
  1×5 cell array
    {'ANGER'}    {'CONTEMPT'}    {'DISGUST'}    {'JOY'}    {'SADNESS'}

>> h.Values
ans =
   164    26    18   191     1

但似乎并不是在直方图条上显示标签(即h.Values)的方法。 在this post之后,我尝试了这个:

text(h.Values, h.Categories, num2str(h.Values'), 'HorizontalAlignment', 'Center', 'VerticalAlignment', 'Bottom' );

但我得到:

  

使用文本时出错前两个或三个参数必须是数字双精度。

但问题是我的x值永远不会是数字,它们是分类的。如何解决?

对于可重现的示例,这样做:

emotions = { 'JOY','JOY','JOY','JOY','JOY','JOY','JOY','JOY','JOY','JOY','ANGER','ANGER','CONTEMPT','CONTEMPT','CONTEMPT','JOY','ANGER','ANGER','ANGER','ANGER'}
emotions = emotions.';
t = cell2table(emotions)
histogram(categorical(emotions))

1 个答案:

答案 0 :(得分:0)

您已将text的前两个输入参数互换,而h.Categories不是必需的数字双精度(正如错误消息所示)。
所以解决方案是:

emotions = {'JOY','JOY','JOY','JOY','JOY','JOY','JOY','JOY','JOY', ...
     'JOY','ANGER','ANGER','CONTEMPT','CONTEMPT','CONTEMPT','JOY', ...
     'ANGER','ANGER','ANGER','ANGER'};
% emotions = emotions.';    %No need of this line
% t = cell2table(emotions); %No need of this line
h = histogram(categorical(emotions));

text(1:numel(h.Values), h.Values, num2str(h.Values.'), ...
    'HorizontalAlignment', 'Center', 'VerticalAlignment', 'Bottom');

<强> 结果:

output