Matlab openfig 到现有图形
Matlab openfig to existing figure
当我在 Matlab 中使用 openfig(filename);
打开保存的图形时,它总是会打开一个新的 window。 'reuse'
参数所做的只是在文件看起来已经打开时不加载文件。但是,我希望将文件 打开到给定的图形 中,然后只覆盖其内容。有没有办法将图形句柄传递给 openfig
,或者是否有其他函数可以完成此操作?
所以在代码中,我想做的是以下几行:
f = figure;
openfig(filename, 'Figure',f);
然后该图将显示在图 f
中,而不是打开第二个图 window。
我认为您可以使用 copyobj
功能安排一些接近您想要的内容。这是对接图形的尝试:
% --- Create sample figure
h = figure;
ezplot('sin(x)');
set(gcf, 'Windowstyle', 'docked');
pause
% --- Replace the axes
clf
g = openfig('test.fig', 'invisible');
copyobj(get(g, 'CurrentAxes'), h);
delete(g);
这让我可以顺利更换轴,而不会出现图形闪烁。
但是,我不知道全屏图形会如何表现,这肯定取决于您选择的方法。还要详细检查 copyobj
的文档,它不会复制所有内容,因此您可能需要使用 legacy
选项。
当我在 Matlab 中使用 openfig(filename);
打开保存的图形时,它总是会打开一个新的 window。 'reuse'
参数所做的只是在文件看起来已经打开时不加载文件。但是,我希望将文件 打开到给定的图形 中,然后只覆盖其内容。有没有办法将图形句柄传递给 openfig
,或者是否有其他函数可以完成此操作?
所以在代码中,我想做的是以下几行:
f = figure;
openfig(filename, 'Figure',f);
然后该图将显示在图 f
中,而不是打开第二个图 window。
我认为您可以使用 copyobj
功能安排一些接近您想要的内容。这是对接图形的尝试:
% --- Create sample figure
h = figure;
ezplot('sin(x)');
set(gcf, 'Windowstyle', 'docked');
pause
% --- Replace the axes
clf
g = openfig('test.fig', 'invisible');
copyobj(get(g, 'CurrentAxes'), h);
delete(g);
这让我可以顺利更换轴,而不会出现图形闪烁。
但是,我不知道全屏图形会如何表现,这肯定取决于您选择的方法。还要详细检查 copyobj
的文档,它不会复制所有内容,因此您可能需要使用 legacy
选项。