Построение графиков функций, зависящих от одной переменной



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

В качестве примера, построим график функции, зависящей от одной переменной (График функции у=sin(x) на интервале [0,2] ), выполнив для этого следующую последовательность команд:

При этом MATLAB создал графический объект в специальном графическом окне, имеющем заголовок Figure № 1. Данное окно имеет собственную панель меню и панель инструментов. Выполнив следующие команды:

при открытом графическом окне можно получить новый график (график функции у=cos(x) но интервале [0,2]), который заменяет предыдущую зависимость

Для построения нового графика в новом окне необходимо предварить команду plot командой figure(2), которая создает новое графическое окно:

>> figure(2);plot(x,z) ;

Для одновременного отображения двух зависимостей в одном графическом окне необходимо перед построением второй зависимости выполнить команду hold on:

>> plot(х,у);

>> hold on

>> plot(x,z) ;

Аналогичный результат можно получить, выполнив команду: >> plot(x,y,x,z) ;

Для создания окна с несколькими графическими окнами используется команда subplot:

>> subplot(l,2,l);plot(x,y);

>> subplot(l,2,2) ;plot(x,z) ;

Функция subplot принимает три числовых аргумента, первый из которых равен числу рядов подобластей, второй - числу колонок подобластей, а третий аргумент - номеру подобласти (номер отсчитывается вдоль рядов слева направо с переходом на новый ряд по исчерпанию). Если для одиночного графика диапазоны изменения переменных вдоль одной или обеих осей координат слишком велики, то можно воспользоваться функциями построения графиков в логарифмических масштабах. Для этого предназначены функции semilogx, semilogy и loglog. Для построения графика функции в полярных координатах использует­ся команда polar, например:

>> phi=0:0.001:2*pi;

>> r=sin(3*phi);

>> polar(phi,r);

 

Оформление графиков и графических окон

Функции построения графиков, рассмотренные в п.1, осуществляли автоматическое оформление графиков. Рассмотрим дополнительные возможности, связанные с управлением внешним видом графиков — задание цвета и стиля линий, а также размещение различных надписей в пределах графического окна.

Например, следующие команды

>> x=0:0.1:3; y=cos(x);

>> plot( х, у, 'r-', х, у, 'kо' )

позволяют придать графику вид красной сплошной линии, на которой в дискретных точках, расстояние между которыми равно 0.1, проставляются черные окружности. Здесь функция plot дважды строит график одной и той же функции, но в двух разных стилях. Первый из этих стилей отмечен как «r-», что означает проведение линии красным цветом (буква r), а штрих означает проведение сплошной линии. Второй стиль, помеченный как «kо», означает проведение черным цветом (буква k) окружностей (буква о) на месте вычисляемых точек. В общем случае функция plot(xl,yl,sl,x2,y2, s2,...) позволяет объединить в одном графическом окне изображения нескольких функций yl(xl), у2(х2), ..., используя стили s1, s2.

Стили s1, s2, ... задаются в виде набора трех символьных маркеров, один из которых задает тип линии (табл П.2), второй — цвет линии (табл. П.1), третий — тип маркера, используемого для пометки проставляемых точек (табл. П.2).

Таблица П.1

Таблица П.2

При отсутствии указания типов маркеров используются значения, установленные по умолчанию. Отметим, что порядок, в котором указываются маркеры, задающие тип линии, цвет линии и тип точки, не существенен. Более мощным способом оформления графиков функций и других графических объектов является метод дескрипторов, который относится к низкоуровневой графике MATLAB. Метод дескрипторов позволяет напрямую обратиться к базовым графическим объектам и задать его свойства. Ниже приводим некоторые примеры иллюстрирующие основные приемы работы с дескрипторной графикой и позволяющих продемонстрировать суть данного метода.

>> х=0:0.1:3;

>> y=sin(x);

>> hplot=plot(х,у) ; % создаем графический объект и присваиваем

                              % переменной

                              % hplot значение дескриптора

>> set{hplot,'LineWidth',8);   % устанавливаем толщину линии

                                           % 8 пикселей

Здесь функция plot через опорные точки проводит отрезки прямых линий с координатами х, у. Прямые линии в MATLAB представляют собой графические объекты типа line. Эти объекты имеют огромное число свойств и характеристик, которые можно менять. Доступ к этим объектам осуществляется по их описателям (дескрипторам; по-английски — handles). Функция plot возвращает описатель графического объекта типа line, использованного для построения графика, который заносится в переменную hplot. Затем данный описатель передается в качестве параметра функции set для опознания конкретного графического объекта и задания значений соответствующих свойств объекта. В приведенном выше примере мы установили значение свойства 'LineWidth' (толщина линии) равным 8 (по умолчанию — 0.5). Текущее значение любого параметра (атрибута; характеристики) графического объекта возвращается функцией get. Например, если после получения показанного на рисунке графика выполнить команду:

>> width = get{ hplot, 'LineWidth' )

width =

8

то для переменной width присвоено значение свойства LineWidth, равное 8.

Для получения списка всех свойств графического объекта следует обратиться к функции get, указав ей в качестве единственного параметра, описатель объекта. Например, для дескриптора hplot объекта типа line находим весь список его свойств:

Среди свойств графического объекта с дескриптором hPlot имеются интуитивно понятные. В частности, свойство Color отвечает за цвет линии в RGB-кодировке: Красный Зеленый Синий (так как значение поля равно [0 0 1] цвет линии синий); свойство Line Width определяет толщину линии (равную в рассматриваемом случае восьми); свойство MarkerSize отвечает за размер маркера точек графика (равного в рассматриваемом случае 6); свойство Parent содержит дескриптор объекта-родителя данного объекта. Для профессиональной работы с дескрипторной графикой требуется знание всех свойств графических объектов. Наиболее важным свойствам MATLAB присваивает по умолчанию вполне приемлемые значения. Установленные значения полей указываются в списке свойств справа от знака равно. При этом свойства, значения которых неустановленны, отмечены пустым полем или знаком [ ].

Рассмотрим приемы оформления осей координат: задание надписей осей, названия осей, размера и типа шрифта и так далее. По умолчанию MATLAB устанавливает пределы на горизонтальной оси, равными минимальному (xmin) и максимальному (xmax) значениям независимой переменной. Для зависимой переменной по вертикальной оси MATLAB автомати­чески вычисляет диапазон изменения значений функции [ymin, ymax] В результате график функции оказывается вписанным в прямоугольник, нижний левый и верхний правый углы которого имеют, соответственно, координаты [xmin,ymin], [xmax,ymax]. При необходимости отказаться от указанной особенности автоматического масштабирования графиков в MATLAB, необходимо явным образом указать выбранные пределы изменения переменных х, у. Для выполнения данной процедуры используется функция axis([ xmin, xmax, ymin, уmах])

Указанную команду можно вводить с клавиатуры уже после построения графика функции. Это позволяет провести визуальный анализ особенностей этой функции. Например, для чтобы более подробно проанализировать поведение функции sin в окрестности точки максимума, можно установить пределы по осям координат axis([1.5, 2.5, 0.5, 2]):

>> set(hplot,'LineWidth',0.5);

>> axis( [1.5,2.5,0.5,2]) ;

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

>> hAxes=gca;

>> set(hAxes, 'xtick', [1.5,1.75,2.0,2.25,2.5] ) ;

Для размещения различных надписей на полученном рисунке применяют функции xlabel, уlabel, title и text. Функция xlabel предназначена для размещения названия горизонтальной оси, функция ylabel — названия вертикальной оси (причем эти надписи ориентированы вдоль осей координат). Для размещения надписи в произвольном месте рисунка используется функция text:

>> text(x,у,'some text')

Здесь х, у — координаты нижнего левого угла прямоугольника, в котором размещается отображаемый текст. По умолчанию координаты задаются в тех же единицах измерения, что и координаты, указанные на горизонтальной и вертикальной осях. Общий заголовок для графика выводится функцией title. Кроме того, используя команду

grid on

можно нанести измерительную сетку на всю область построения графика. Выполнив команды

>> title('Function sin graph');

>> xlabel('x coordinate');ylabel('sin(x)');

>> text(2.1,0.9,'\leftarrowsin(x)');

>> grid on

получим график функции, представленный на рис. П.1.

Рис. П.1. Пример оформления графиков

Здесь использованы специальные управляющие символы, введенные внутри текста после символа \ («обратная косая черта») «стрелка влево». Команды отображения специальных символов MATLAB совпадают с соответствующими командами системы подготовки научных текстов ТеХ. В частности, для создания новой строки и вывода в нее текста применяется команда \newline. Для того, чтобы установить шрифт, которым изображается надпись, нужно запомнить описатель (дескриптор), возвращаемый этой функцией:

>> hText = text(2.1,0.9,'\leftarrowsin(x)');

Располагая дескриптором hText объекта типа text, можно изменять ряд его атрибутов. Например, следующая команда

>> set(hText,'Color*,[0 1 0 ],'FontSize*,[18]);

изменит внешний вид ранее выведенной надписи — теперь используется более крупный шрифт, а цвет надписи стал зеленым. Отметим, что для вывода в графическое окно текста, написанного кириллицей, необходимо использовать шрифт MS Sans Serif, который можно задать, установив значение поля FontName объекта Text:

>> set (hText, 'FontName', 'MS Sans Serif);

в противном случае текс будет отображаться в виде набора специальных символов.

Завершая обсуждение способов оформления графиков функций, покажем, как изменить цвет фона, на котором осуществляется построение графиков. По умолчанию установлен белый цвет. Для того, чтобы сделать его слегка зеленоватым, нужно присвоить свойству Color объекта типа axes значение [0.5,0.8,0.5]. Для этого сначала надо получить описатель этого объекта:

hAxes = gca;

Функция gca предназначена для поиска описателя текущего объекта axes. При наличии нескольких объектов типа axes сначала нужно щелкнуть мышью на том из них, который должен стать текущим, и только после этого вводить представленную выше команду.

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

>> set(hAxes, 'Color', [0.5,0.8,0.5]);

Для смены фона всего графического окна нужно выполнить следующие команды:

>> FigureColor=[0.8,0.5,0.5]; hFigure=gcf;

>> set(hFigure,  'Color', FigureColor);

 


Дата добавления: 2019-09-13; просмотров: 329; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!