MATLAB: How to use multiple grouping variables in boxplot? Why box plot grouping variable ‘not same length’ error

box plotcell arraygrouping variablesMATLAB and Simulink Student Suitevector

1. How do I use multiple grouping variables?
2. How do I resolve the borrowing incorrect error?
Error message:
>> BoxplotGICategoriesDVH
Error using boxplot>straightenX (line 969)
G must be the same length as X or the same length as the
number of columns in X.
Error in boxplot (line 273)
[xDat,gDat,origRow,xlen,gexplicit,origInd,origNumXCols]
= straightenX(x,g);
Error in BoxplotGICategoriesDVH (line 8)
boxplot(data,group)
Verifying that G is "the same length as the number of columns in X":
>> length(group)
ans =
3
>> data
data =
4 18 30
5 8 9
Code causing the error:
data = round(10*rand(2,3));
data(:,2)=2*data(:,2);
data(:,3)=3*data(:,3);
group = cell(3,1);
group{1} = {'1','a'};
group{2} = {'2','b'};
group{3} = {'3','c'};
boxplot(data,group)
How do I resolve this error?

Best Answer

This StackOverflow answer appears to contain the solution I'm seeking.
This code works:
data = round(10*rand(10,4));
data(:,2)=2*data(:,2);
data(:,3)=3*data(:,3);
data(:,4)=2*3*data(:,4);
group = {reshape(repmat('A':'B',2,1),4,1) repmat((1:2)',2,1)};
boxplot(data,group)
Apparently the error was caused by having a cell array with cells being 1x4 vectors instead of 4x1 vectors.
Removing the repmat and reshape commands for simplicity:
data = round(10*rand(10,4));
data(:,2)=2*data(:,2);
data(:,3)=3*data(:,3);
data(:,4)=2*3*data(:,4);
group{1} = {'1';'1';'2';'2'};
group{2} = {'a';'b';'a';'b'};
boxplot(data,badgroup)
The problem was caused by using commas instead of semi-colons, i.e. a row vector instead of a column vector.