2015-07-29 1 views
-1

У меня есть следующий код, чтобы построить график, но я продолжал получать сообщение об ошибке: «Должно быть такое же количество меток, что и группы, или количество элементов в X». Может кто-то, пожалуйста, укажет на мою ошибку. Спасибо.Ярлык Boxplot не соответствует группам

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(); 
+0

Здесь практически нет полезной информации. Каковы размеры векторов/массивов, которые объединены в ваш вызов 'boxplot'? Для каждого столбца вам нужна одна метка. Поскольку вы горизонтально конкатенируете их, если они все векторы, тогда вы получите только одну коробку, и поэтому она будет искать только одну метку. – excaza

+0

Нет, я не хочу их конкатенировать. Я хочу построить каждый вектор. Я довольно новичок в Matlab. – user3612121

ответ

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(); 
+0

Да, но проблема в векторах x6 - x12 также являются векторами, которые необходимо построить. Каждый вектор соответствует одному ящику. – user3612121

+0

ps, ​​лучше всего, если вы можете поставить код в том, что работает без изменений - люди будут гораздо чаще отвечать на ваш вопрос! – ConfusinglyCuriousTheThird

+0

Хорошо. Спасибо за подсказку, сделаю это в следующий раз – user3612121

0

Основной проблемой здесь является то, что вы конкатенации векторами в один большой вектор. В документации для boxplot:

Если 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