Заголовок и подписи осей это текстовые объекты, потомки осей

При создании осей MATLAB создает сразу четыре потомка осей - текстовые объекты для заголовка и подписей для каждой из трех осей. Однако, если создать оси

hA = axes('CameraPosition', [-4 -5 5], 'Box', 'on')

и попытаться получить указатели на их потомков при помощи функции get и свойства Children осей, то мы получим пустой массив

get(hA,'Children')ans = Empty matrix: 0-by-1

Так происходит потому, что в MATLAB по умолчанию эти четыре потомка осей имеют скрытые указатели и функция get их "не видит". Изменение этой установки производится с уровня объекта Root - корневого объекта в иерархии графических объектов MATLAB. Указатель на корневой объект всегда равен нулю, а за отображение скрытых указателей отвечает свойство ShowHiddenHandles корневого объекта. Если оно имеет значение 'off' (как по умолчанию), то объекты со скрытыми указателями не видны, а если 'on', то видны. Скрытие указателей используется для предотвращения случайного изменения пользователем вида графических объектов (см. разделе Скрытие указателей объектов приложения с GUI).

Установим свойство корневого объекта ShowHiddenHandles в 'on' и снова применим функцию get для получения указателей на потомков осей:

set(0, 'ShowHiddenHandles', 'on') h = get(hA, 'Children') h = 155.0035 154.0035 153.0035 152.0035

Действительно, оси содержат четырех потомков, которые являются текстовыми объектами, в чем несложно убедиться, обратившись к их свойству Type:

get(h, 'Type') ans = 'text' 'text' 'text' 'text'

Примечание. Функция get допускает задание массива указателей в качестве ее первого входного аргумента. В этом случае она возвращает результат в массиве ячеек (в нашем примере ans), каждая строка которого содержит значение свойства Type соответствующего графического объекта.

То, что MATLAB должен скрывать указатели на эти текстовые объекты при значении 'off' свойства ShowHiddenHandles корневого объекта, определяется значениями свойства HandleVisibility текстовых объектов. В данном случае значение свойства HandleVisibility всех четырех потомков осей есть 'off'

get(h, 'HandleVisibility') ans = 'off' 'off' 'off' 'off'

Итак, в массиве h содержится четыре указателя:

  • h(1) - указатель на текстовый объект, предназначенный для заголовка к осям. Это тот самый заголовок, который добавляется при помощи функции title.
  • h(2) - указатель на текстовый объект, предназначенный для подписи к оси z, которая может быть изменена при помощи функции zlabel.
  • h(3) - указатель на текстовый объект, предназначенный для подписи к оси y, которая может быть изменена при помощи функции ylabel.
  • h(4) - указатель на текстовый объект, предназначенный для подписи к оси x, которая может быть изменена при помощи функции xlabel.

Если Вы проделали приведенные выше команды, то теперь желательно вернуть свойству ShowHiddenHandles корневого объекта его первоначальное значение:

set(0, 'ShowHiddenHandles', 'off')

Используя свойства текстовых объектов, рассмотренные выше в разделе Текстовый объект, вывод текста и математических формул в графическое окно, легко настроить вид заголовка и подписей к осям по своему усмотрению.

На самом деле этот пример с доступом к скрытым указателям к текстовым объектам был приведен только для того, чтобы убедиться, что создаваемые оси действительно имеют четырех потомков - текстовые объекты. Указатели на эти объекты могут быть получены при помощи свойств Title, XLabel, YLabel и Zlabel осей.

Изменение свойств заголовка и подписей осей может быть выполнено при помощи высокоуровневых функций title, xlabel, ylabel и zlabel, которые допускают следующие способы вызова:

title('текст заголовка', 'Свойство', значение, 'Свойство', значение,...) xlabel('подпись к оси x', 'Свойство', значение, 'Свойство', значение,...) ylabel('подпись к оси y', 'Свойство', значение, 'Свойство', значение,...) zlabel('подпись к оси z', 'Свойство', значение, 'Свойство', значение,...)

Здесь пары 'Свойство'-значение это название свойства текстового объекта и его возможное значение. Например, для получения заголовка, состоящего из нескольких строк, достаточно указать массив ячеек, каждая ячейка которого содержит нужную строку (см. Вывод многострочного текста)

title({'Results'; 'of my experiment'})

Функции xlabel, ylabel и zlabel также допускают подписи к той паре осей, указатель на которую задан в их первом входном аргументе, например:

xlabel (указатель на оси, 'подпись к оси x', 'Свойство', значение, 'Свойство', значение,...)

При таком же способе обращения к функции title выводится ошибка, однако имеется функция title4ax (4 значит for, созвучное с four, а ax - axes), которая предназначена для вывода заголовка на определенные оси:

title4ax (указатель на оси, 'текст заголовка', 'Свойство', значение, 'Свойство', значение,...)

Впрочем, всегда можно узнать, какие оси текущие при помощи функции gca, которая возвращает указатель на текущие оси, затем вызывать функцию axes и сделать текущими нужные оси, разместить на них заголовок и подписи, а затем использовать функцию axes для того, чтобы вернуть предыдущее состояние осей:

hA0=gca % узнаем указатель на текущие оси axes(hA) % делаем текущими оси с указателем hA title('Заголовок') axes(hA0) % делаем текущими оси с указателем hA0, как и было раньше

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: