【问题标题】:Can I make multiple subplots in multiple Matlab figures within one loop?我可以在一个循环中在多个 Matlab 图形中制作多个子图吗?
【发布时间】:2013-11-19 09:15:59
【问题描述】:

我想以两个图形导出我的数据,每个图形有四个子图。但是,当我尝试在循环中执行此操作时,它只会打印带有四个图的第二个图形。当我使用figure 时,它会打印八个数字,每个数字都有一个图。以下是部分代码:

subplot(2,2,k);
plot(2.^[4:2:10], a, '-mo', 2.^[4:2:10], b, '-r+', 2.^[4:2:10], c, '-bx'  );
axis([2.^4, 2.^10, 0, max([max(a), max(b), max(c)])]);    
str = sprintf('Time for m1 = 2^%d',i);
title(str);
xlabel('n ')
ylabel('s') 

subplot(2,2,k);
plot(2.^[4:2:10],a1, '-mo', 2.^[4:2:10], b1, '-r+', 2.^[4:2:10], c1, '-bx'  );
axis([2.^4, 2.^10, 0, max([max(a1), max(b1), max(c1)])]);    
str = sprintf('Time for m1 = 2^%d',i);
title(str);
xlabel('n ')
ylabel('M') 

【问题讨论】:

  • 在代码中显示导出部分。您究竟在哪一部分进行导出?还包括figure 和循环的基本部分
  • 你的循环在哪里?也许您可以通过创建一个实际运行的小演示来说明您的代码在做什么,或者进一步了解这一点。
  • 看看我上次的编辑,现在它是一个完整的通用解决方案。您可以将它用于每个图形的每个数量的图。
  • 当我试图运行这个错误使用图请求的图句柄正在被另一个对象使用时,我已经有一个用于进行计算的循环,最后我想要打印两个图,每个图有 4 个图。例如对于 i=1:1:4 %calculations 图1..........图2..........结束
  • 是的,你只需要在你的循环中引入另一个索引变量,它将你的曲线分布到正确的图中。如果对您有帮助,请随时接受答案。

标签: matlab matlab-figure subplot


【解决方案1】:

你的循环需要看起来像这样:

x = 1:2;
y = x;

f = 2;  %number of figures
c = 2;  %number of plots per column per figure
r = 2;  %number of plots per row per figure
n = repmat(cumsum(ones(1,r*c)),1,f);  %index for subplots
h = ceil( (1:f*r*c)/(r*c) ); %index of figures

for ii=1:f*r*c

   % calculations

   % plot specifier
   figure( h(ii) )
   subplot( r,c,n(ii) )

   % plot
   plot(x,y)

   % your plot properties
end

它为您提供带有 2x2 子图的 figure(1) 和带有 2x2 子图的 figure(2)

例如

f = 3;  %number figures
c = 3;  %number of columns per figure
r = 4;  %number of rows per figure

会给你 3 个数字,每个数字都是 3x4 的地块,依此类推...


如果图表出现的顺序很重要,您可以更改hn 的创建方式。这些只是例子。基本上它们只是将您的索引ii 与外观顺序相关联的向量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-16
    • 2019-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-29
    相关资源
    最近更新 更多