Как найти оси по строке YLabel? - PullRequest
0 голосов
/ 24 октября 2018

Я создаю фигуру с несколькими сюжетами и сохраняю ее в файл.например:

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?Есть ли лучший способ найти оси, которые я хочу?

1 Ответ

0 голосов
/ 24 октября 2018

Видимость дескриптора для текстового объекта метки отключена, поэтому он не будет отображаться в свойстве Children своих родительских осей и, следовательно, не будет найден при использовании findobj.Вместо этого вы можете использовать findall, чтобы обойти это ограничение:

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

В качестве альтернативы, вы можете установить root ShowHiddenHandles свойство в 'on' вперечислить все дескрипторы объекта независимо от их свойства HandleVisibility, что делает findobj и findall эквивалентными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...