我正在创建一个包含多个子图并将其保存到文件的图形.像这样:
fig = figure;
ax1 = subplot(2, 1, 1);
ax2 = subplot(2, 1, 2);
ylabel(ax1, 'First');
ylabel(ax2, 'Second');
savefig('myfigure.fig')
Run Code Online (Sandbox Code Playgroud)
后来,我想将一个子图复制到一个新图,而不重新运行创建图的代码.我当前的方法是加载保存的图形,找到我想要通过其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);
Run Code Online (Sandbox Code Playgroud)
问题是findobj上面没有找到YLabel.它只返回一个0x0空的GraphicsPlaceholder数组.为什么findobj找不到我的YLabel?有没有更好的方法来找到我想要的轴?
标签文本对象的句柄可见性已关闭,因此它不会显示在Children其父轴的属性中,因此在使用时将无法找到findobj.您可以使用findall来解决此限制:
ylabel_obj = findall(oldfig, 'String', 'First');
Run Code Online (Sandbox Code Playgroud)
或者,您可以将root ShowHiddenHandles属性设置'on'为列出所有对象句柄,而不管其HandleVisibility属性设置,制作findobj和findall等效.
| 归档时间: |
|
| 查看次数: |
40 次 |
| 最近记录: |