How do you create a grouped boxplot with categorical variables on the x-axis.

280 views (last 30 days)
Included is a picture of what I'm trying to do. I downloaded some new functions off of MatLab downloads but they seem to be for numerical variables on both the x and y-axis. I'm looking to group categorical variables on the x-axis of the boxplot. Is there anything I can download or any existing code that does this? Thanks in advance!

Answers (2)

Adam Danz
Adam Danz on 6 Mar 2020
Edited: Adam Danz on 6 Mar 2020
If your boxplot data are matrices with the same number of columns, you can use boxplotGroup() from the file exchange to group the boxplots together with space between the groups.
For example,
data = {rand(100,2), rand(100,2)+.2, rand(100,2)-.2};
boxplotGroup(data, 'PrimaryLabels', {'a' 'b' 'c'}, ...
'SecondaryLabels',{'Group1', 'Group2'}, 'GroupLabelType', 'Vertical')
Example 2
data = {rand(100,2), rand(100,2)+.2, rand(100,2)-.2};
boxplotGroup(data, 'PrimaryLabels', {'a' 'b' 'c'}, ...
'SecondaryLabels',{'Group1', 'Group2'}, 'InterGroupSpace', 2)
Also see Kelly Kearney's boxplot2() function.
mhd z
mhd z on 10 Nov 2020
Thank you Adam
I ran the code line by line and figured it out. I was a little comlex :)
its realy a good code. thank you

Sign in to comment.

Iddo Weiner
Iddo Weiner on 22 Mar 2017
Take a look at this, it explains how to do precisely what you want: Link


Find more on Data Distribution Plots in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!