# Why isn't there any simple command to create a grouped boxplot in MATLAB yet?

74 views (last 30 days)
Sharah on 9 Oct 2016
Edited: Massimo Zanetti on 9 Oct 2016
I am trying to plot a grouped boxplot on MATLAB but surprisingly Excel can do better!Can anyone suggest the best way to create a grouped boxplot as easy as making one for barchart?

Massimo Zanetti on 9 Oct 2016
Edited: Walter Roberson on 9 Oct 2016
Sure, there is matlab function specific for this: http://www.mathworks.com/help/stats/boxplot.html
boxplot(MPG,Origin)
title('Miles per Gallon by Vehicle Origin')
xlabel('Country of Origin')
ylabel('Miles per Gallon (MPG)')

Show 1 older comment
Massimo Zanetti on 9 Oct 2016
Inspect the help page of the boxplot function, by using CELL input arguments (e.g., for "grouping variables" argument) you can easily obtain the results that you are showing.
Just as an example:
data = rand(20,24);
month = repmat({'jan' 'feb' 'mar' 'apr' 'may' 'jun' 'jul' 'aug' 'sep' 'oct' 'nov' 'dec'},1,2);
simobs = [repmat({'sim'},1,12),repmat({'obs'},1,12)];
boxplot(data,{month,simobs},'colors',repmat('rb',1,12),'factorgap',[5 2],'labelverbosity','minor');
Sharah on 9 Oct 2016
Does the data needs to be the same size? What if we have different size?
Massimo Zanetti on 9 Oct 2016
According to what I know, yes they must have the same size. The reason is that, the boxplot helps visualizing different feature distributions of the same dataset of samples. Assume you have 100 observed animals, and for any of them you observe height, weigth. Then your data will be 100x2 matrix.
However, if you really need to explain different sized data, here is how to do it: https://it.mathworks.com/matlabcentral/answers/60818-boxplot-with-vectors-of-different-lengths