"Вычисления, визуализация и программирование в среде MATLAB 5.x" - читать интересную книгу автора (Мартынов Н. Н., Иванов А. П.)

Тип точки Точка Плюс Звездочка Кружок Крестик
54 Глава 2. Визуализация результатов вычислений
Можно указывать не все три маркера. Тогда используются маркеры, установленные по умолчанию. Порядок, в котором указываются маркеры, не является существенным, то есть *г+—' и '-+Г1 приводят к одинаковому результату.
Если в строке стиля поставить маркер типа точки, но не проставить маркер на тип линии, то тогда отображаются только вычисляемые точки, а непрерывной линией они не соединяются.
Наиболее мощным способом оформления графиков функций (и выполнения других графических работ) является дескрипторный метод, относящийся к так называемой низкоуровневой графике системы MATLAB. Дескрипторная графика имеет дело с базовыми графическими объектами, каждый из которых может быть индивидуально настроен посредством задания всех его свойств. Детальное знакомство со свойствами графических объектов системы MATLAB невозможно осуществить минимальными усилиями, так как количество свойств отдельных графических объектов доходит до ста. Однако во многих случаях применение дескрипторной графики не вызывает никаких затруднений. Приведем сейчас иллюстрирующие примеры.
Выше мы оформляли график функции sin с помощью непрерывной красной линии и черных кружков. Теперь попробуем ограничиться лишь непрерывной линией, но очень толстой. Как это можно сделать? Вот простое решение на базе дескрипторной графики:
х = 0 : 0.1 : 3; у = sin ( х );
hPlot = plot( х, у );
set( hPlot, 'LineWidth', 7 );
Функция plot через опорные (вычисленные) точки с координатами х, у проводит отрезки прямых линий. Прямые линии в системе MATLAB представляют собой графические объекты типа line. Эти объекты имеют огромное число свойств и характеристик, которые можно менять. Доступ к этим объектам осуществляется по их описателям {дескрипторам; по-английски - handles).
Описатель графического объекта типа line, использованного для построения нашего графика, возвращается функцией plot. Мы его запоминаем в переменной hPlot. Затем этот описатель предлагается функции set для опознания конкретного графического объекта. Именно для такого опознанного объекта функция set изменяет характеристики, указанные в других ее аргументах. В нашем примере мы указали свойство 'LineWidth' (толщина линии) и его новое значение 7 (по умолчанию - 0.5). В результате получается следующая картина (см. рис. 2.8).
Текущее значение любого параметра (атрибута, характеристики) графического объекта можно узнать с помощью функции get. Например, если после получения показанного на рисунке графика ввести и исполнить команду
width = get( hPlot, 'LineWidth1 ) то для переменной width будет получено значение 7.

MATLAB 5.x. Вычисления, визуализация, программирование
55
~i Figure No.
Рисунок 2.8
Чтобы ознакомиться со списком всех свойств графического объекта, нужно вызвать функцию get, указав ей описатель объекта в виде единственного параметра. Например, для описателя hPlot объекта типа line находим весь список его свойств:
get( hPlot ) Color =[0 0 1] EraseMode = normal LineStyle = -LineWidth = [7] Marker = none MarkerSize = [6] MarkerEdgeColor = auto MarkerFaceColor = none XData = [(1 by 31) double array] YData = [(1 by 31) double array] i ZData = [] ButtonDownFcn = Children = [] Clipping = on CreateFcn = DeleteFcn = BusyAction = queue HandleVisibility = on HitTest = on Interruptible = on Parent = [2.00049]
56 Глава 2. Визуализация результатов вычислений
Selected = off SelectionHighlight = on Tag =
Type = line UIContextMenu = [] UserData = [] Visible = on
Среди всех этих многочисленных свойств встречаются интуитивно понятные. В частности, мы видим значение толщины линии (LineWidth), равное 7; свойство Color отвечает за цвет линии: он равен [001] (RGB-кодировка, то есть Красный Зеленый Синий), что соответствует синему цвету. Для успешного применения иных свойств требуется их подробное и кропотливое изучение, без которого, однако, вполне можно обойтись, так как наиболее важным свойствам система MATLAB присваивает по умолчанию вполне в среднем приемлемые значения. Они указываются в списке свойств справа от знака равно. Некоторые свойства не задействованы и являются резервом, который применяют в специальных случаях.
Теперь от оформления непосредственно линий перейдем к оформлению осей координат, к надписям на осях и т. д. Система MATLAB устанавливает пределы на горизонтальной оси равными тем значениям, что указаны пользователем для независимой переменной. Для зависимой переменной по вертикальной оси MATLAB самостоятельно вычисляет диапазон изменения значений функции. В результате график функции оказывается как бы вписанным в прямоугольник.
Если мы хотим отказаться от этой особенности масштабирования при построении графиков в системе MATLAB, то мы должны явным образом навязать свои пределы изменения переменных по осям координат. Это делается с помощью функции
axis ( [ xmin, xmax, ymin, ymax ] )
причем команду на выполнение этой функции можно вводить с клавиатуры сколько угодно раз уже после построения графика функции, чтобы, глядя на получающиеся визуальные изображения, добиться наилучшего восприятия. Такое масштабирование позволяет получить подробные изображения тех частей графика, которые вызывают наибольший интерес в конкретном исследовании. Например, для ранее полученного графика функции sin можно сузить пределы по осям координат
axis( [ 1.5, 2.5, 0.5, 2 ] )
чтобы получше разглядеть вершину синусоиды (см. рис. 2.9).
Чаще всего этот прием увеличения масштаба изображения применяют при графическом решении уравнений с тем, чтобы получить более высокую точность приближения к корню.
MATLAB 5.x. Вычисления, визуализация, программирование
57
* Figure No. 1
. ?ile ¦: Edit.' Window '' fclelp - ^ '.,* 2
Рисунок 2.9
Теперь изменим количество числовых меток на осях. Их может показаться недостаточно (на горизонтальной оси последнего рисунка их всего три - для значений 1. 5, 2 и 2 .5).
Изменить отметки на осях координат можно с помощью функции set, обрабатывающей графический объект axes. Это объект, который содержит оси координат и белый прямоугольник, внутри которого проводится график функции. Для получения описателя такого объекта применяют функцию дса. Эту функцию вызывают без параметров. В итоге фрагмент кода
hAxes = gca;
set( hAxes, 'xtick', [ 1.5, 1.75, 2.0, 2.25, 2.5 ] )
выполняющийся после построения графика, устанавливает новые метки (в количестве пяти штук) на горизонтальной оси координат.
Для проставления различных надписей на полученном рисунке применяют функции xlabel, ylabel, title и text. Функция xlabel предназначена для проставления названия горизонтальной оси, функция ylabel - то же для вертикальной оси (причем эти надписи ориентированы вдоль осей координат).
Если требуется разместить надпись в произвольном месте рисунка, применяем функцию text:
text( х, у, 'some text')
Общий заголовок для графика проставляется функцией title. Кроме того, используя команду
grid on
можно нанести измерительную сетку на всю область построения графика. Применяя все эти средства:
title( 'Function sin(x) graph' );
58
Глава 2. Визуализация результатов вычислений