【问题标题】:Plot and Subplot [closed]情节和子情节[关闭]
【发布时间】:2013-02-26 23:16:25
【问题描述】:

我有一个大的 for 循环,可以生成很多图表。我正在向代码添加功能,并且希望可以选择在将一系列图形放入带有子图的一个图形中或将图形绘制为单个图形之间切换。我尝试使用以下代码执行此操作,但它不起作用。

 figure
 if (SubplotOPT == 0)
  subplot(2,2,1);
 end

这个想法是,如果不满足 SubplotOPT == 0 则代码将生成一个单独的图形,但是,我认为 matlab 正在制作一个子图,而不管 if 语句如何。

【问题讨论】:

  • 但不起作用,您能详细说明一下吗?相反会发生什么?听起来您在没想到时会看到“子图”数字。另外,您能否在代码之前和之后提供更多背景信息?
  • 我在一分钟前就知道了。上面的代码生成了一个独立于循环的位置的子图。图 if (SubplotOPT == 0) subplot(2,2,1); else subplot(1,1,1) end

标签: matlab plot subplot


【解决方案1】:

试试这个:

for i=1:3
figure(i)   
    if i==3
        subplot(2,1,1)
           plot(rand(1,100))
    else
           plot(rand(1,100))
    end
end

这里在循环中创建了一个常规图形,其中仅针对特定条件创建子图图形。

【讨论】:

    【解决方案2】:

    我对之前的两个解决方案都不满意,所以这是我的尝试:

    % Should we add a subplot, or create a new figure & axes 
    if (SubplotOpt == 0)
      ax = subplot(2,1,1);
    else
      f = figure;
      ax = axes();
    end
    
    plot( 0:.01:2*pi, sin(0:.01:2*pi), 'Parent', ax);
    

    基本上我已经从绘图代码中抽象出子图/图形代码,这样更容易阅读和编辑。

    【讨论】:

      【解决方案3】:
      if (SubplotOPT == 0)
          subplot(2,2,1);
      else
          subplot(1,1,1);
      end
      

      【讨论】:

      • 不需要在该代码中写subplot(1,1,1)。一个简单的plot 应该可以......除非你重写相同的数字而不是清除它......
      猜你喜欢
      • 1970-01-01
      • 2015-03-17
      • 2019-12-05
      • 1970-01-01
      • 2022-08-24
      • 2018-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多