Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Matlab_лек.4_2_СпецГраф_Низкоуровневая графика....docx
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
450.64 Кб
Скачать

2.6.1.1. Графические объекты

Среди всех графических объектов выделяются базовые (Core): оси (Axes), рисунки (Image), источники света (Light), линии (Line), поверхности (Surface), полигональные объекты (Patch) и прямоугольники (Rectangle). Базовые объекты являются основой для создания более сложных композитных объектов (Composite objects). Практически все графические объекты, рассмотренные выше,— композитные. Кроме указанных объектов часто используется корневой объект Root для получения информации о текущем разрешении монитора.

Многие высокоуровневые графические функции группируют базовые объекты для получения требуемого результата в виде рисованных объектов (Plot objects).

2.6.1.2. Иерархия объектов.

Для освоения материала необходимы два понятия из области объектно-ориентированного программирования — предок и потомок. Объект самого верхнего уровня Root не имеет предков, а его потомками являются графические окна — объекты Figure. Свойства Root позволяют произвести некоторые глобальные установки MATLAB. Объект Figure представляет собой отдельное графическое окно. У Root может быть много потомков Figure, т. е. в MATLAB может быть открыто одновременно произвольное число графических окон. Оси являются потомком графического окна и предком для базовых, рисованных и группированных объектов. Невидимые оси слоя примечаний так же являются потомками графического окна и предками для поясняющих объектов. Свойства Parent и Children каждого объекта содержат указатели на его предков и потомков соответственно. Поскольку у объекта Root нет предка, то значением Parent является пустой массив, а у объектов самого низкого уровня отсутствуют потомки, следовательно, значением их свойства children так же является пустой массив. При наличии у объекта нескольких потомков свойство children содержит вектор указателей на них.

Достаточно полная иерархическая структура объектов MATLAB, за исключением элементов управления приложением с графическим интерфейсом, приведена на рисунке [1, с. 524] :

2.6.2. Функции set и get, текущие объекты.

По умолчанию при исполнении функции plot создаются три графических объекта: графическое окно Figure 1, оси и линия графика. Манипулирование свойствами объектов в MATLAB производится функциями get и set. Функция get предназначена для получения значений свойств, a set для установки новых значений. При этом функциям get и set следует указывать, с каким из существующих объектов ведется работа. Имеется три стандартных функции, возвращаемые значения которых могут быть использованы в качестве входного аргумента функций get и set:

- gcf — текущее графическое окно;

- gca — текущие оси;

- gсо — текущий графический объект.

Если есть только одно графическое окно, то оно и является текущим. Единственные оси в графическом окне также являются текущими.

Например, чтобы вывести в командное окно свойства осей текущего графика выполняется команда:

» get(gca)

В командном окне отобразятся примерно 100 строк свойств и их значений. Среди свойств есть очевидные, а назначение некоторых на первый взгляд кажется непонятным. Свойства осей условно можно разделить на две группыобщие свойства и свойства каждой из осей x, у или z . Название свойств второй группы начинается с соответствующей буквы х, y или z.

Функция get допускает обращение к ней с двумя входными аргументами, вторым аргументом является название свойства, значение которого требуется получить, например:

» fn = get(gca,'FontName')

Эта команда записывает название шрифта, используемого в текущих осях, в строковую переменную fn и выводит ее значение на экран:

fn =

Helvetica

Некоторые свойства, отвечающие за внешний вид осей:

Название свойства

Описание

Значения

Box

Заключение осей в прямоугольную рамку

'on' (по умолчанию)или 'off '

Color

Цвет фона осей

Вектор из трех элементов, задающий цвет в формате RGB, например [l 11], или один из определенных цветов: r, g и т. д. (см.[1, приложение 1]). По умолчанию цвет белый.

FontAngle

Наклон шрифта разметки осей

'normal' (по умолчанию) или 'italic'

FontName

Название шрифта

Строка с названием шрифта, например 'Courier'

FontWeight

Толщина шрифта

'normal'(по умолчанию), 'bold', 'light', или 'demi'

GridLineStyle

Стиль линий сетки

'-', '--', ': ' (по умолчанию) '-. ' или 'nоnе’

LineWidth

Толшина линий осей

Значение в пунктах (по умолчанию 0.5)

Visible

Отображение осей

'on' (по умолчанию оси видны), 'off '

DataAspectRatio

Масштаб осей

Вектор из трех элементов, задающий относительный масштаб по каждой из осей

FlotBoxAspectRatio

Размеры осей

Вектор из трех элементов, задающий относительные размеры каждой из осей

Свойства каждой из осей (на примере оси X):

Название свойства

Описание

Значения

XColor

Цвет оси

Вектор из трех элементов, задающий цвет в формате RGB, например, [111] или один из определенных цветов: ' r' , 'g' и т.д. (см. [1, приложение 1]).

XDir

Направление оси

'normal' или 'reverse' (обратное)

XGrid

Сетка, перпендикулярная оси

'on' или 'off '

XAxisLocation

Расположение оси (для оси z отсутствует)

'top' или 'bottom' ('right' или 'left' для оси У )

XLim

Пределы изменения переменной

Вектор из двух компонент, равных пределам изменения переменной, например, [-1.5 2.3]

XScale

Масштаб оси

'linear' или 'log'

XTick

Координаты разметки оси

Вектор с координатами разметки, например, [0 1 3 5]

XTickLabel

Разметка оси

Вектор ячеек с названиями разметки (число ячеек равно длине вектора с координатами разметки), например, {'zero'; 'one'; 'three'; 'five'}

Команда set позволяет установить каждому свойству осей любое из допустимых значений. Первым аргументом задается gса, а вторым и третьим — пара: 'свойство', значение.

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

» set(gca, 'LineWidth', 2)

» set(gca, 'YTick', [-1 0 1]) - координаты разметки;

» set(gca, 'YTickLabel', {' y = -1'; ' y = 0'; 'y = l'}) - названия разметок;

» set(gca, 'XGrid' , 'on')

» set(gca, 'GridLines', '-')

» set(gca, 'Color', [0.8 0.8 0.8]) .

Часть названий свойств заканчивается словом Mode, например, YTickMode. Такие свойства могут иметь только два значения — ' auto' (устанавливаемое по умолчанию) или 'manual'; причем 'auto' соответствует автоматическому подбору значения свойства, в данном случае YTick. Задание вектора в YTick приводит к смене значения YTickMode с 'auto' на 'manual'. Всегда можно отменить проделанные изменения свойства YTick, установив YTickMode в 'auto'. Вышесказанное справедливо для всех свойств, имеющих сопутствующее свойство, которое заканчивается на Mode.

Среди названий свойств осей, полученных при помощи get (gca), есть Title, Xlabel, Ylabel, Zlabel. Их значения не являются текстовыми строками. Они содержат указатели на соответствующие текстовые объекты. Об использовании указателей и о текстовых объектах см. [1, глава 9, разделы "Указатели на объекты" и "Текстовые объекты"].

Свойства осей XLim, YLim, ZLim, DataAspectRatio, PlotBoxAspectRatio, отвечающие за пределы, масштаб и относительные размеры осей, взаимосвязаны. Например, относительные размеры осей зависят от пределов и масштаба, более того, при заданных DataAspectRatio, XLim, YLim и, возможно, ZLim значение свойства PlotBoxAspectRatio игнорируется.

Графические объекты MATLAB обладают большим набором свойств. Сведения по ним можно получить с помощью интерактивной справочной системы (Graphics: Handle Graphics Objects). Кроме того, быстрый доступ к назначению всех свойств графических объектов производится из браузера свойств, размещенного в разд. MATLAB: Handle Graphics Property Browser.

Использование браузера свойств графических объектов описано в [1, глава 9, разд. "Получение информации о свойствах графических объектов"].

Для обращения к текущей линии графика или поверхности в MATLAB нет специальной встроенной функции (подобной рассмотренной выше функции gca для осей). Но к ним можно обращаться как к текущим объектам. Для этого необходимо активизировать щелчком мыши в графическом окне соответствующий объект и затем вывести таблицу свойств и их значений в командное окно, используя функцию gсо:

» get(gco)

Наиболее часто употребляемые свойства линии:

Название свойства

Описание

Значения

Color

Цвет

Вектор из трех элементов, задающий цвет в формате RGB, например, [1 l l] или один из определенных цветов: ' г', ' g' и т. д. (см.[1, приложение 1])

LineStyle

Стиль линии

'-' (по умолчанию), '- -', ':', ' - . ' или 'nоnе'

LineWidth

Толщина линии

Положительное число в пунктах (1 пункт = 1/72 дюйма)

Marker

Тип маркера

Одно из стандартных обозначений, например, 'о', 's' для функции plot (см. таблицу из раздела 2.5.1.1.)

MarkerEdgeColor

Цвет границы маркера

Такие же, как у Color

MarkerFaceColor

Цвет маркера

Такие же, как у Color

MarkerSize

Размер маркера в пунктах

Положительное число

Примеры установок с помощью функции set:

» set(gco, 'Color', 'k')

» set(gco, 'LineWidth', 2)

» set(gco, 'Marker', 'o')

» set(gco, 'MarkerFaceColor', 'w')

» set(gco, 'MarkerSize', 8)

Функции высокоуровневой графики для построения поверхностей (mesh, surf, surf1 и др.) основаны на низкоуровневой функции surface, которая позволяет создать поверхность с любыми заданными свойствами.

Текущим объектом, используемым в функции gco, может быть не только линия или поверхность, но и оси, и графическое окно. Текущим является объект, который только что создан, или выбран щелчком мыши. Свойства не текущим объектам устанавливаются с помощью указателей [1, глава 9, раздел "Указатели на объекты"].