【问题标题】:Multiple Subplots with (Sub-)Subplots (MATLAB)带有(子)子图的多个子图(MATLAB)
【发布时间】:2017-06-19 14:29:46
【问题描述】:

我的目标是创建 14 个子图,每个子图中有四个数字。不幸的是,我没有任何示例代码可以展示,因为我不知道如何去做。关于如何实现这一目标的一些想法突然出现在我的脑海中。一种是分别创建多个图形,然后将它们合并为一个图形。另一种是创建子图,其中嵌套了多个子图;但是,同样,我不知道如何才能做到这一点。

【问题讨论】:

  • 你能用颜料或其他东西创建一个方框图吗?我做过类似的事情,但不完全确定你的意思。
  • 14 个子图 x4 个图?我认为一个图中的 56 个图违背了目的:显示结果。只需制作 14 个数字,每个数字有 4 个子图

标签: matlab plot


【解决方案1】:

您可能会发现您试图在一个图形上拟合太多数据,而图形太小而看不到任何感兴趣的东西。但是,一种可行的技术,可以让您选择拥有单个图形,如果您愿意,可以将它们组合成一个图形,即使用每个图形上都有一个面板,然后使用 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,但以上给出了主要思想。

【讨论】:

  • 这正是我所寻找的——它与我的代码完美配合。谢谢!
猜你喜欢
  • 2014-04-24
  • 1970-01-01
  • 2016-07-30
  • 2018-12-23
  • 2013-08-27
  • 2016-06-16
  • 1970-01-01
  • 2014-04-01
  • 2013-09-28
相关资源
最近更新 更多