我创建了一个分类直方图:
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))
答案 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');
<强> 结果: 强>