我有4个不同的数字。每个图包含2个子图(2行1列)
可以使用以下代码生成数据。
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创建图形的其他示例..为什么?
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 :(得分:0)
这可能不是您想要的,但是非常易于扩展。您可以遍历每个原始的4个数字,并获取其中每个subplot
的句柄。一旦我们对使用figure(i)
感兴趣的数字是当前的gcf
对象,我们可以使用s = subplot(2, 1, i)
获取每个子图元素的句柄,同时提供我们知道子图的结构和{{ 1}}是我们感兴趣的子图。
然后我们可以使用copyobj()
和allchild()
将每个子图复制到新图中的新子图
i
allchild()
复制barwitherr()
中的所有信息,这些信息是您之前编辑我的问题答案时复制的代码中遗漏的。
如果我们将所有这些放在一起,我们可以生成完整的代码
copyobj(allchild(h), s)
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
用于复制原始排序。由此产生的输出是