Matlab中相同轴上的水平和垂直箱图

时间:2014-04-30 17:06:49

标签: matlab matlab-figure

我试图在Matlab R2011b的同一轴上绘制一组水平和垂直的箱线图。使用通常的hold on命令似乎不起作用;仅显示第二组箱图。我的代码如下:

bv = boxplot(x,yGrp,'orientation','vertical');
hold on
bh = boxplot(y,xGrp,'orientation','horizontal','position',yPos);

yGrp和xGrp,分组索引变量分别专门设置在y和x数据集的范围内,因此这两个图应该自然地具有相似的值集。也就是说,我的x变量跨越范围0-0.05并且我的y变量跨越范围0-1,因此yGrp包含一组介于0和1之间的分类数字,xGrp包含跨越范围0-0.05的分类号。类似地,选择yPos以跨越垂直轴的预期0-1范围。

在第二个boxplot调用中删除'position'参数或尝试使用简单的整数变量没有帮助。如果在单独的窗口中绘制我的箱形图看起来很好,但我无法将它们组合在一起。我究竟做错了什么?

1 个答案:

答案 0 :(得分:1)

问题出在轴限制(xlimylim)。简而言之,你的第一个箱图存在,但隐藏在轴外。

当您绘制第二个箱图时,它会设置自己的限制,忽略第一个箱图。此外,boxplot默认情况下将位置(水平方向的y值)设置为1:number_of_groups,但会根据您的组标记它们。因此ylim将是[0.5 number_of_groups+0.5]。 由于x值介于0和0.05之间,因此它们不可见。

作为一种解决方案,考虑到此箱图行为,手动设置限制:

x = rand(10,1)/20;
xg = randi(2,10,1)/40;
y = rand(10,1);
yg = randi(2,10,1)/2;
bv = boxplot(x,xg,'orientation','vertical');
xlim manual
hold on
bh = boxplot(y,yg,'orientation','horizontal');
hold off
xlim([0 2.5])
ylim([0 2.5])

设置position参数时,它会确定值而不是1:number_of_groups。您可以将它们设置为接近x

的范围