C. *_*eed 6 matlab plot bar-chart stackedbarseries
说我的数据如下:
level,age
8,10
8,11
8,11
9,10
9,11
9,11
9,11
Run Code Online (Sandbox Code Playgroud)
我想在Matlab中形成一个堆积条形图,其中"水平"在x轴上,该水平的出现次数(频率)在y轴上:所以8的y值为3而且,我希望将它作为叠加条形图,因此8级将有1个单位为绿色(绿色为10岁)和2个单位为红色(红色为年龄) 11)和9将有1个单位的绿色和3个单位的红色.
谢谢你的帮助!
您可以使用ACCUMARRAY函数以相当紧凑和通用的方式执行此操作,例如,data您的7 x 2样本数据矩阵在哪里:
ageValues = unique(data(:,2)); %# Vector of unique age values
barData = accumarray(data(:,1),data(:,2),[],@(x) {hist(x,ageValues)});
X = find(~cellfun('isempty',barData)); %# Find x values for bars
Y = vertcat(barData{:}); %# Matrix of y values for bars
hBar = bar(X,Y,'stacked'); %# Create a stacked histogram
set(hBar,{'FaceColor'},{'g';'r'}); %# Set bar colors
legend(cellstr(num2str(ageValues)),'Location','NorthWest'); %# Add a legend
Run Code Online (Sandbox Code Playgroud)
请注意,在倒数第二行中{'g';'r'}传递给函数SET的颜色单元格数组应该具有相同数量的元素ageValues才能正常工作.
这是结果条形图:
