How to dynamically name each box on a boxplot?

2 views (last 30 days)
Hi! I have a struct file, in this, there are some data (see 'data.mat'). I need to make a boxplot with this. But I dont know how to use the fields name of the boxplot to put it in the boxplot figure. Can anyone help me?
Let me make it clear. In the data, there are many possible combinations who I need to compare in groups. In this way, I need, for example, see what is the effect of the parameter "b" in my results. So, for example, I need to compare the boxplot of 'data.a1.b1.c1.mem' with 'data.a1.b2.c1.mem', 'data.a1.b3.c1.mem' and 'data.a1.b4.c1.mem'. I wanna know how to put, dinamically, a1, b* and c1 in corresponding boxplot for future references, in other words, in the figure below, where I have 1, 2, 3 and 4, I need to put something like a1b1c1, a1b2c1, a1b3c1 and a1b4c1 respectively in a dynamic way.
untitled.jpg
How can I do it?
Thank you!

Accepted Answer

Adam Danz
Adam Danz on 23 Apr 2019
Edited: Adam Danz on 21 May 2019
You can convert the nested field names into a string using this FEX submission: fieldnamesr()
Then you can use those strings as your XTickLabels.
Here's some code that demonstrates this - you can adapt it to your needs. The demo produces a boxplot figure with nested field names as x labels.
data.a1.b1.c1 = nan;
data.a1.b2.c1 = nan;
data.a1.b3.c1 = nan;
data.a1.b4.c1 = nan;
% Get all field names
fields = fieldnamesr(data, '-full');
xLabels = strrep(fields, '.', '');
boxplot(randi(100,1,1000), randi(4,1,1000))
set(gca, 'XTickLabels', xLabels)
190521 085358-Figure 1.jpg

More Answers (0)

Categories

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!