How to use 'factorgap' to set larger gaps between groups of boxplot.

35 次查看(过去 30 天)
Dear Community,
I am using the below code to combine boxplot with scatter plot. I am wondering, how to use the 'factorgap' to have every boxes in a kind of groups of two, that is, larger gap after every second ones.
I appreciate your suggestions!
Regards
lg
h=boxplot(vertcat(C{:}),grp,'symbol','','Colors','k');
set(h,'LineWidth',1.5)
lines = findobj(gcf, 'type', 'line', 'Tag', 'Median');
set(lines, 'Color', 'r');
hold on
scatter(grp,data_for_scatter,'.','k','jitter','on', 'jitterAmount',0.1);
ps: Please find the example data attached!
  3 个评论
Scott MacKenzie
Scott MacKenzie 2021-7-26
From the boxplot documentation:
  • 'FactorGap' represents the distance of the gap between different factors of a grouping variable, expressed as a percentage of the width of the plot.
So, in my answer I used "15", which corresponds to 15% of the width of the plot. So, you can see extra spacing between between the three groups of two boxes for the g1 group variable.
Once you get things set up with the extra group variable, you'll need to play with this value until you get the spacing you want.

请先登录,再进行评论。

采纳的回答

Scott MacKenzie
Scott MacKenzie 2021-7-26
编辑:Scott MacKenzie 2021-7-26
It is important to distinguish between a group and the members or elements of that group. The documentation on this point is poor for the boxplot function, and there are no examples. But, here's the scoop...
In order to use factorgap, you need >1 group. The factorgap setting allows you to control the spacing between the different groups in a boxplot. But, you only have one group (grp). Yes, there are 13 members or elements for that group, but there is only one group or grouping variable. Make sense?
To illustrate, here's a box plot for a data set that is divided into two groups. There are three members the 1st group and two members for the 2nd group. Using factorgap, extra spacing is inserted between the members, or boxes, for the 1st group. You can see this in the chart that follows.
% test data
M = rand(100,100);
% two group variables
g1 = randi([1 3],100,1); % 3 members for g1
g2 = randi([8 9],100,1); % 2 members for g2
% create box plot with extra spacing between the g1 boxes
boxplot(M, [g1 g2],'factorgap', 15);
If you want some extra spacing after every 2nd box, then you need to create a 2nd group variable and include it in your code, as demonstrated above.

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Data Distribution Plots 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by