How to avoid horizontal shifts after applying GroupByColor on boxcharts?

8 次查看(过去 30 天)
I'm trying to plot 5 boxcharts with 5 different boxcolors in one figure.
To get different colors im using the GroupByColor function as stated in the documentation.
The application of GroupByColor however leads to a horizontal shift of the boxplots.
How do I have to change my code to avoid the shift of my boxplots?
figure(1)
boxchart(xData,yData,'GroupByColor',xData,'BoxWidth',2)
grid on
'GroupByColor' not applied: correct position, wrong colors
'GroupByColor' applied: wrong position, correct colors

回答(2 个)

Adam Danz
Adam Danz 2023-4-19
You can create the boxes in a loop,
y = magic(5);
[nrows, ncols] = size(y);
hold on
for i = 1:ncols
boxchart(repelem(i,nrows,1),y(:,1))
end

Cris LaPierre
Cris LaPierre 2023-4-19
编辑:Cris LaPierre 2023-4-19
Typically, groups of boxplots share the same x value (see here and here). So what is happening is MATLAB is making room for one boxplot for each group at each x tick value, with the entire group centered around the x-tick.
It looks a little different in your plot because you have increased the box width.
I don't know of a way to modify individual boxcharts otherwise, and also don't see a way to change the position of a grouped boxchart.
If color is important, you may have better luck using boxplot. See here: https://www.mathworks.com/matlabcentral/answers/1705595-color-each-boxplot-differently

类别

Help CenterFile Exchange 中查找有关 Annotations 的更多信息

标签

产品


版本

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by