代码之家  ›  专栏  ›  技术社区  ›  marolafm

倍频程/Matlab-使用现有绘图对图形进行子绘图

  •  1
  • marolafm  · 技术社区  · 7 年前

    我的倍频程工作流如下所示:

    我有大量的数据要处理,还有大量的绘图要生成。对于每个绘图, 我有一个函数,可以完成所有工作,生成自己的绘图,并返回此绘图的句柄,以便将来进行修改(如果需要)。类似这样:

    function [h,p] = processData_and_generatePlot_A(datainput)
           %%.....
           h = figure();
           p = plot(h, ...)
           %%....
    end
    

    现在,我要做的是编写一个脚本,调用所有这些函数,收集所有图形,并尝试将所有图形组合到一个图形中(即,生成的每个绘图都应该是新图形中的子绘图)。

    因此,问题是:

    • 是否可以将打印处理程序传递给 subplot 函数,因此打印打印而不是生成新的打印?
    • 如果没有,是否有办法将现有图插入到新图形中?

    提前感谢

    1 回复  |  直到 7 年前
        1
  •  2
  •   Tommaso Belluzzo    7 年前

    实际上存在一种将不同地物中的图合并为新地物子地块的方法。让我害怕的是你 “要生成大量绘图” ,因此必须定义将现有绘图拆分为 N 数字,以避免将所有数字塞进一个数字中。

    上述方法涉及使用 copyobj 函数,下面是一个示例,您可以根据需要轻松修改以下内容:

    f1 = figure();
    x1 = -10:0.1:10;
    y1 = sin(x1);
    p1 = plot(x1,y1,'r');
    
    f2 = figure();
    x2 = -10:0.1:10;
    y2 = cos(x2);
    p2 = plot(x2,y2,'r');
    
    pause(5);
    
    f3 = figure();
    sub1 = subplot(1,2,1);
    sub2 = subplot(1,2,2);
    
    copyobj(p1,sub1);
    delete(f1);
    
    copyobj(p2,sub2);
    delete(f2);