带有(子)子图的多个子图(MATLAB)

时间:2017-06-19 14:29:46

标签: matlab plot

我的目标是在每个子图中创建14个子图,其中包含四个数字。不幸的是,我没有任何示例代码可以显示,因为我不知道如何去做。一些关于如何实现这一目标的想法已经浮现在我脑海中。一种是分别创建多个图形,然后将它们合并为一个图形。另一种方法是创建包含嵌套在其中的多个子图的子图;然而,再一次,我不知道如何才能实现这一目标。

1 个答案:

答案 0 :(得分:0)

你可能会发现你试图将太多数据放到一个数字上,并且这些数字太小而无法看到任何有趣的东西。但是,一种有效的技术,可以让你选择拥有单独的数字,如果你愿意,可以将它们组合成一个数字,就是使用每个数字,每个数字都有一个面板,然后用copyobj复制到你的主要人物。

例如,

% Create first figure
hf_sub(1) = figure(1);
hp(1) = uipanel('Parent',hf_sub(1),'Position',[0 0 1 1]);
subplot(2,2,1,'Parent',hp(1));
plot(1:10);
subplot(2,2,2,'Parent',hp(1));
surf(peaks);
subplot(2,2,3,'Parent',hp(1));
membrane;
subplot(2,2,4,'Parent',hp(1));
plot(rand(1,100));

% Create second figure
hf_sub(2) = figure(2);
hp(2) = uipanel('Parent',hf_sub(2),'Position',[0 0 1 1]);
subplot(2,2,1,'Parent',hp(2));
histogram(randn(1,1000));
subplot(2,2,2,'Parent',hp(2));
membrane
subplot(2,2,3,'Parent',hp(2));
surf(peaks)
subplot(2,2,4,'Parent',hp(2));
plot(-(1:10));

% Create combined figure
hf_main = figure(3);
npanels = numel(hp);
hp_sub = nan(1,npanels);
% Copy over the panels
for idx = 1:npanels
    hp_sub(idx) = copyobj(hp(idx),hf_main);
    set(hp_sub(idx),'Position',[(idx-1)/npanels,0,1/npanels,1]);
end

您可能需要更加小心定位面板,并且可能想要创建单个图形,其可见性设置为off,但上面给出了主要想法。

相关问题