unique
您可以使用和函数执行您想要的操作histc
来获取唯一值和频率计数,然后使用'stacked'
选项 inbar
绘制数据。请注意,在下文中,我采用level
和age
作为列向量。我还使代码的中心部分通用,而不是针对这个特定示例。
level=[8,8,8,9,9,9,9]'; %'#SO code formatting
age=[10,11,11,10,11,11,11]'; %'
%#get unique values and frequency count
uniqLevel=unique(level);
freqLevel=histc(level,uniqLevel);
uniqAge=unique(age);
%#combine data in a manner suitable for bar(...,'stacked')
barMatrix=cell2mat(arrayfun(@(x)histc(age(level==uniqLevel(x)),uniqAge),...
1:numel(uniqLevel),'UniformOutput',false));
%#plot the stacked bars and customize
hb=bar(barMatrix','stacked'); %'
set(gca,'xticklabel',uniqLevel,'ytick',1:max(sum(barMatrix)))
set(hb(uniqAge==10),'facecolor','green')
set(hb(uniqAge==11),'facecolor','red')
xlabel('Level')
ylabel('Occurrence')
legend('10','11','location','northwest')