plotting multiple boxplots in the same figure window

538 views (last 30 days)
I have 10 vectors of temperature data, all different lengths, that I want to make boxplots of and plot them all in the same figure window. How do I do this?

Answers (3)

Tom Lane
Tom Lane on 19 Nov 2012
Here's how to do that with three vectors of different lengths:
x1 = rand(10,1); x2 = 2*rand(15,1); x3 = randn(30,1);
x = [x1;x2;x3];
g = [ones(size(x1)); 2*ones(size(x2)); 3*ones(size(x3))];
boxplot(x,g)
  6 Comments
Gabriel Apaza
Gabriel Apaza on 5 May 2021
matlab's notation is so incredibly non user friendly it blows my mind
Seth DeLand
Seth DeLand on 25 May 2022
Just a note that as of R2020a this can also be accomplished using the boxchart function in MATLAB. boxplot is part of Statistics and Machine Learning Toolbox.

Sign in to comment.


Matt Learner
Matt Learner on 25 Mar 2018
Edited: Matt Learner on 25 Mar 2018
A = [16 20 15 17 22 19 17]';
B = [22 15 16 16 16 18]';
C = [23 9 15 18 13 27 17 14 16 15 21 19 17]';
group = [ ones(size(A)); 2 * ones(size(B)); 3 * ones(size(C))];
figure
boxplot([A; B; C],group)
set(gca,'XTickLabel',{'A','B','C'})
  4 Comments
TESFALEM ALDADA
TESFALEM ALDADA on 28 Oct 2021
@Matt Learner Thank you for your answer. I was having the same problem. For the above example they it has only three variables (A, B,C), but what will happen if it has 1000 variables, are we going to type all in the group?
I ask any robest way to do this for longer data.
Peanut
Peanut on 20 Jan 2022
You would store the variables in a structure, where each field is a variable. Then you would loop through the fields, vertically concatenating each one.
e.g.
s.A = rand(10,1);
s.B = rand(15,1);
s.C = rand(20,1);
allData = [];
allCats = [];
allFields = string(fieldnames(s))
for iField = 1:length(allFields)
allData = [allData;s.(allFields(iField))];
allCats = [allCats,repelem(allFields(iField),length(s.(allFields(iField))));]
end
boxplot(allData,allCats)

Sign in to comment.


Akiva Gordon
Akiva Gordon on 17 Nov 2012
Are you familiar with the SUBPLOT function? This may be what you are looking for…

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!