Вы можете делать что хотите, используя функции unique
и histc
, чтобы получить уникальные значения и счетчики частоты, а затем использовать параметр 'stacked'
в bar
для построения данных. Обратите внимание, что в дальнейшем я взял 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')