【问题标题】:Plotting an existing MATLAB plot into another figure将现有的 MATLAB 绘图绘制到另一个图形中
【发布时间】:2013-08-28 00:50:01
【问题描述】:

我使用 plot 命令绘制了一个图形,然后使用 set 命令更改了它的许多属性。我还存储了情节的句柄(比如 h1)。

我需要的是稍后在我的代码中使用句柄再次绘制相同的图形。我检查了 plot 命令,没有找到任何接受句柄的版本。我还想过获取 Xdata 和 Ydata 并使用它们重新绘制相同的图形。

什么是最简单的解决方案?

编辑 1:PeterM 建议的基于 copyobj 的工作示例代码。

hf(1) = figure(1);
plot(peaks);

hf(2) = figure(2);
plot(membrane);

hf(3) = figure(3);
ha(1) = subplot(1,2,1);
ha(2) = subplot(1,2,2);

for i = 1:2
    hc  = get(hf(i),'children');
    hgc = get(hc, 'children');
    copyobj(hgc,ha(i));
end

编辑 2:我还发现 this function 可以将数字(包括图例)复制到子图中。

【问题讨论】:

    标签: matlab plot


    【解决方案1】:

    我以前也遇到过这种情况。根据您尝试执行的功能,copyobj 可能是合适的。此功能可让您获取一个轴的内容并将其复制到新图形。

    【讨论】:

      【解决方案2】:

      改进@PeterM 不错的答案,一种更简单的方法是:

      fig2H=copy(gcf) % or change gcf to your figure handle
      

      但这取决于你想要什么,如果你只想要轴,或者整个图......(顺便说一句,它似乎没有复制图例句柄)。

      【讨论】:

        【解决方案3】:

        您可以使用saveas 将图形保存在文件中,并使用open 从该文件加载完全相同的图形。

        【讨论】:

          【解决方案4】:

          这将是完成你想要的最懒惰的方式。

          % Sample plot
          f1 = figure(1);
          plot(0:0.1:2*pi, sin(0:0.1:2*pi));
          f2 = figure(2);
          
          % The code you need
          saveas(f1, 'temp.fig')
          f2 = hgload('temp.fig')
          delete('temp.fig')
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-11-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多