Create a grouped boxplot

406 views (last 30 days)
NA
NA on 7 Jul 2021
Commented: Adam Danz on 22 Sep 2022
I have 3 groups of data A, B, and C.
A = rand(100,8);
B = rand(100,8)*2;
C = rand(100,8)*4;
I want to plot Box chart of grpup A,B and C.
The internal label of each group is {'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h'}.
I found boxplotgroup(), and used below code
data = {A,B,C};
boxplotGroup(data, 'PrimaryLabels', {'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h'}, ...
'SecondaryLabels',{'A', 'B' 'C'}, 'InterGroupSpace', 3)
But I got this error.
Error using assert (line 5)
The number of primary labels must equal either the number of bars per group
(3) or the number of total bars (24).
Error in boxplotGroup (line 155)
assert(ismember(numel(p.Results.primarylabels),[nMembers,
nMembers*nGroups]), ...
Error in (line 13)
boxplotGroup(data, 'PrimaryLabels', {'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h'}, ...

Accepted Answer

Christopher McCausland
Christopher McCausland on 7 Jul 2021
Edited: Christopher McCausland on 7 Jul 2021
Hi NA,
From the documentation here (See section boxplotGroup(__,'primaryLabels',c) ) the number of primary lables should match the number of boxplotGroups. i.e. you appear to be plotting three box plots (A,B,C) but trying to give these box plots eight names ('a' 'b' 'c' 'd' 'e' 'f' 'g' 'h').
I beleive that you are trying to show something like the last example in boxplotGroup(__,'secondaryLabels',s) (shown below) in which case swap your primary and secondary labels.
Let me know if that helps,
Christopher
  5 Comments
Adam Danz
Adam Danz on 22 Sep 2022
To fix this, set the axis tick label interpreter to tex
h = boxplotGroup(__);
h.axis.TickLabelInterpreter = 'tex';

Sign in to comment.

More Answers (0)

Categories

Find more on Line Plots in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by