2015-09-25 3 views
0

У меня есть 4 разных фигуры. Каждая цифра содержит 2 подзаголовка (2 строки и 1 колонку)Слияние 4 отдельных подзаговоров на 1 фигуре с 4 подзаголовками

Цифры могут быть сгенерированы с использованием следующего кода.

y = [2 2 3; 2 5 6; 2 8 9; 2 11 12]; 

for i = 1 : 4 
    figure(i) 
    subplot(2,1,1) 
    bar(y) 
    subplot(2,1,2) 
    bar(y) 
end 

Имея эти 4 цифры, можно ли комбинировать их на 1 фигуре?

Предоставленное решение не работает с этим другим примером, где я создаю фигуру с помощью barwitherr ..why?

for i = 1 : 4 
    figure(i) 
    subplot(2,1,1) 
    barwitherr([1 2 3 4;1 2 1 2], [5 6 7 8;1 2 3 4]) 
    subplot(2,1,2) 
    barwitherr([1 2 3 4;1 2 1 2], [5 6 7 8;1 2 3 4]) 
end 
for i = 1:4 
    figure(i); 
    ax = gca; 
    f = get(ax, 'children'); 

    figure(5); 
    s = subplot(2, 2, i); 
    copyobj(f, s); 
end 
+0

слияния при создании или после? – thewaywewalk

+1

Я в замешательстве, здесь 8 подзаговоров. – excaza

+0

слияние потом – gabboshow

ответ

0

Это может быть не совсем то, что вы хотите, но очень расширяемое. Вы можете прокручивать каждый из исходных 4 фигур и получать ручки для каждого из subplot s внутри него. После того, как рисунок мы заинтересованы в использовании figure(i) является текущим gcf объектом, который мы можем получить дескриптор каждые из элементов подзаговора с s = subplot(2, 1, i) условия, что мы знаем структуру сюжетных и i это сюжетный нас интересуют.

Мы можем тогда мы используем copyobj() и allchild() скопировать каждый из сюжетных к новому подзаговору в новом рисунке

copyobj(allchild(h), s) 

allchild() копию над всей информацией в barwitherr(), что остались из кода вы скопировали из предыдущее редактирование моего ответа на ваш вопрос.

Если мы все это вместе, мы можем производить полный код, как

for i = 1:4 
    figure(5); 

    n = i + (i - 1); 

    s1 = subplot(4, 2, n); 
    s2 = subplot(4, 2, n+1); 

    h = figure(i); 
    hs1 = subplot(2, 1, 1); 
    hs2 = subplot(2, 1, 2); 

    copyobj(allchild(hs1), s1) 
    copyobj(allchild(hs2), s2) 
end 

n = i + (i - 1); используется для репликации оригинального заказа. Выход производства это

                Output

+0

Привет, у меня уже есть 4 цифры, имеющие 2 подзаголовка, и я хочу объединить 4 фигуры на фигуре, имеющей 4 подзаголовка – gabboshow

+0

@IKavanagh Ему не нужна помощь в создании сюжетов правильно, как объясняет ваш ответ, ему нужна помощь в слиянии уже существующих участков. – thewaywewalk

+1

@thewaywewalk Итак, он хочет взять 4 отдельных фигуры, каждый с двумя подзаголовками, и объединить их в 1 фигуру с 4 подзаголовками? – IKavanagh