【问题标题】:How to find axes by YLabel string?如何通过 YLabel 字符串查找轴?
【发布时间】:2018-10-24 17:06:57
【问题描述】:

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

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 空的 GraphicsPlaceholder 数组。为什么findobj 找不到我的 YLabel?有没有更好的方法来找到我想要的坐标轴?

【问题讨论】:

    标签: matlab


    【解决方案1】:

    标签文本对象的handle visibility 已关闭,因此它不会显示在其父坐标区的Children 属性中,因此在使用findobj 时将找不到。你可以改用findall 来绕过这个限制:

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

    或者,您可以将root ShowHiddenHandles property 设置为'on' 以列出所有对象句柄,而不管它们的HandleVisibility 属性设置如何,从而使findobjfindall 等效。

    【讨论】:

      猜你喜欢
      • 2014-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-18
      • 2021-09-20
      • 2016-08-22
      • 1970-01-01
      相关资源
      最近更新 更多