How to plot box plots of data of different sizes on the same figure?
93 ビュー (過去 30 日間)
古いコメントを表示
Hi everyone!
I have vectors of variable sizes in a cell array. I need to plot the box plot of each vector on the same figure. The Matlab function boxplot accepts only a matrix as an input, meaning that I cannot plot all the boxes together by passing a cell array. Also, it doesn't work if I hold the axes and plot the boxes one by one at different positions. A simple code is below to help you understand the issue.
x1 = randn(128, 1);
x2 = randn(100, 1);
figure
boxplot(x1, 'Positions', 1);
hold on
boxplot(x2, 'Positions', 2);
% only one box is shown
0 件のコメント
採用された回答
Ive J
2021 年 7 月 13 日
編集済み: Ive J
2021 年 7 月 13 日
You just need to define a grouping array:
x1 = randn(128, 1);
x2 = randn(100, 1);
X = [x1; x2];
grp = [ones(size(x1)); 2.*ones(size(x2))];
boxplot(X, grp)
5 件のコメント
Ive J
2021 年 7 月 14 日
After checking again the boxplot behavior, I guess there is a workaround to avoid this grouping:
x1 = randn(128, 1);
x2 = randn(100, 1);
ax = gca;
hold on
boxplot(ax, x1, 'Position', 1)
boxplot(ax, x2, 'Position', 2)
hold off
% modify XLim and YLim so that the axis covers both datasets.
ax.XLim = [0.5, 2.5]; % Make sure that ax XLim covers both
YLimCoeff = 1.1;
ax.YLim = [YLimCoeff*min([x1(:); x2(:)]), YLimCoeff*max([x1(:); x2(:)])]; % so, even if x1 and x2 come from different sources, by now, both are available
% modify XTick: current axis only has the tick value for the second boxplot
ax.XTick = [1, 2];
ax.XTickLabel = string(ax.XTick);
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Geographic Plots についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!