首页 > 解决方案 > 在箱线图上显示统计显着性

问题描述

我正在用 MATLAB 中的样本数据集绘制两个箱线图。我想在箱线图之间放一个星号,表示统计显着性。当我画这颗星星时,它被调整到一个角落而不是盒子之间。我附上了箱线图。任何解决此问题的帮助将不胜感激。

x1 = required_data_threhold_time_for_recruitment_gdnest; 
x2 = required_data_threhold_time_for_recruitment_bdnest; 
x = [x1 ;x2];
g = [ones(size(x1)); 2*ones(size(x2))];
boxplot(x,g,'Labels',{'Good nest (1 lux)','Poor nest (16 lux)'});
ylabel('Time(seconds)')
yt = get(gca, 'YTick');
axis([xlim    0  ceil(max(yt)*1.2)])
set(gca, 'Xtick', 1:3);
xt = get(gca, 'XTick');
hold on
plot(xt([2 3]), [1 1]*max(yt)*1.1, '-k',  mean(xt([2 3])), max(yt)*1.15, '*k')
hold off

在此处输入图像描述

标签: matlabmatlab-figureboxplot

解决方案


您正在 x 轴坐标 之间绘制一条线xt([2 3]),其中xt包含刻度线的位置。这意味着您在刻度线 2 和 3 之间画了一条线。如果您观察绘图,您将看到仅显示两个刻度线。第三个超出了右侧的限制。所以线(和星)的位置完全符合预期。

而是使用xt([1,2]),前两个刻度线的位置。

你有三个刻度线的原因是因为这条线

set(gca, 'Xtick', 1:3);

它在 x 坐标 1、2 和 3 处显式设置刻度线。您的图形的 x 限制可能接近 0.5 和 2.5,因为绘图框是在整数坐标处绘制的。您可以检查xlim已在代码中使用的 的值,以了解限制是什么。

我会跳过这一步,不明确设置刻度位置,它们从一开始就应该是正确的。

另外,我会使用ylim命令(或set(gca,'XLim',...))来更改 y 轴限制。


推荐阅读