我正在创建一个包含多个子图的图形并将其保存到文件中。像这样:
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?有没有找到我想要的轴的更好方法?
答案 0 :(得分:6)
标签文本对象的handle visibility已关闭,因此它不会显示在其父轴的Children
属性中,因此在使用{{3}时找不到}。您可以改用findobj
来解决此限制:
ylabel_obj = findall(oldfig, 'String', 'First');
或者,您可以将findall
设置为'on'
以列出所有对象句柄,而不论其HandleVisibility
属性设置如何,使findobj
和findall
等效。