plotting multiple boxplots in the same figure window
288 次查看(过去 30 天)
显示 更早的评论
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?
0 个评论
回答(3 个)
Tom Lane
2012-11-19
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)
Matt Learner
2018-3-25
编辑:Matt Learner
2018-3-25
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 个评论
TESFALEM ALDADA
2021-10-28
@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
2022-1-20
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)
Akiva Gordon
2012-11-17
Are you familiar with the SUBPLOT function? This may be what you are looking for…
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!