Boxplot标签与组不匹配

时间:2015-07-29 14:02:42

标签: matlab boxplot

我有以下代码来绘制方框图,但我不断收到错误消息“必须有与组相同数量的标签或X中的元素数量”。有人可以指出我的错误。谢谢。

  xyz = [1x160];
  xzy = [1x160];
  yzx = [1x160];
  yxz = [1x160];
  zxy = [1x160];
  zyx = [1x160];
    figure();
    boxplot([xyz, xzy, yxz, yzx, zyx, zxy],'notch', 'on','labels',  {'xyz','xzy','yxz','yzx','zyx','zxy'}, 'symbol', '')
    hold on
    ylim([0,30]);
    xlabel('Rotational Matrices')
    ylabel('fn(gamma)')
    grid();

2 个答案:

答案 0 :(得分:0)

你的矢量需要以正确的方式定位(注意转换):

xyz = linspace(1,160,160)';
xzy = linspace(1,160,160)';
yzx = linspace(1,160,160)';
yxz = linspace(1,160,160)';
zxy = linspace(1,160,160)';
zyx = linspace(1,160,160)';
figure();
boxplot([xyz, xzy, yxz, yzx, zyx, zxy],'notch', 'on','labels',  {'xyz','xzy','yxz','yzx','zyx','zxy'}, 'symbol', '')
hold on
% ylim([0,30]);
xlabel('Rotational Matrices')
ylabel('fn(gamma)')
grid();

答案 1 :(得分:0)

这里的主要问题是你将你的向量连接成一个大向量。根据{{​​3}}的文档:

  

如果X是矩阵,则每列有一个框;如果X是一个向量,   只有一个盒子。

由于只有一个框,并且您尝试传递多个标签,因此该调用将会出错。

您要做的是创建一个矩阵,其中每列数据对应于您的向量。观察以下内容之间的区别:

A = 1:4;
B = 5:8;

test1 = [A, B];
test2 = [A', B'];

>> test1

test1 =

     1     2     3     4     5     6     7     8

>> test2

test2 =

     1     5
     2     6
     3     7
     4     8