如何通过YLabel字符串查找轴?

时间:2018-10-24 17:06:58

标签: matlab

我正在创建一个包含多个子图的图形并将其保存到文件中。像这样:

fig = figure;
ax1 = subplot(2, 1, 1);
ax2 = subplot(2, 1, 2);
ylabel(ax1, 'First');
ylabel(ax2, 'Second');
savefig('myfigure.fig')

稍后,我想将其中一个子图复制到一个新图形中,而无需重新运行创建该图形的代码。我当前的方法是加载保存的图形,通过其YLabel定位要复制的轴,然后将其复制到新图形:

newfig = figure;
oldfig = openfig('myfigure.fig');
ylabel_obj = findobj(oldfig, 'String', 'First');  % This is not givng me what I expect
old_axes_obj = ylabel_obj.Parent;
new_axes_obj = copyobj(old_axes_obj, newfig);

问题是上述findobj找不到YLabel。它只是返回一个0x0的GraphicsGraphholder空数组。 findobj为什么找不到我的YLabel?有没有找到我想要的轴的更好方法?

1 个答案:

答案 0 :(得分:6)

标签文本对象的handle visibility已关闭,因此它不会显示在其父轴的Children属性中,因此在使用{{3}时找不到}。您可以改用findobj来解决此限制:

ylabel_obj = findall(oldfig, 'String', 'First');

或者,您可以将findall设置为'on'以列出所有对象句柄,而不论其HandleVisibility属性设置如何,使findobjfindall等效。