Материал: MATLAB3

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
    1. Задание осей координат

Графический объект создается автоматически при обращении к командам, порождающим объекты Line и Surface, или командой axec('<имя свойства>', <значение>, ...). Есть и команды более высокого уровня:

  • axis([xmin xmax ymin ymax]), axis([xmin xmax ymin ymax zmin zmax]) устанавливает масштаб по осям;

  • axes off / on выключает (включает) вывод на координатные оси обозначений и маркеров;

  • grid on / off, grid включает (выключает) или переключает режим нанесения координатной сетки на осях;

  • box on / off, box включает (выключает) или переключает режим рисования контура параллелепипеда, трехмерный объект;

  • zoom on / off включает (выключает) режим интерактивного масштабирования графиков: левая кнопка мыши увеличивает масштаб вдвое, правая – уменьшает; удержанием левой кнопки мыши можно выделить прямоугольную область для детального просмотра; zoom out восстанавливает исходный график.

    1. Линии уровня

В отличие от meshс (...) и surfс(...) команда contour рисует только линии уровня соответствующих поверхностей и выступает в многообразии синтаксических форм: contour(X, Y, Z) – для массива Z = Z(X, Y), contour(X, Y, Z, n) – то же с указанием числа линий уровня (по умолчанию 10), что демонстрирует рис. 4.12, contour(X, Y, Z, v) – то же для массива указанных значений; contour(Z), contour(Z, n), contour(Z, v) – аналогичные команды без указания диапазонов для аргументов и contour(..., LineSpec) – аналогичные команды с указанием типа и цвета линий (см. plot); [с, h] = contour (...) возвращает массив с и вектор дескрипторов, позволяя тем самым продолжить работу с рисунком (давать оцифровку линий, заголовки и др.).

»[c, h] = contour(xord, yord, z1, 20);

»[c, h, cf] = contourf(xord, yord, z1, 20);

Рис. 4.12

Рис. 4.13

Команда contourf(...) закрашивает области между линиями уровня, аналогична contour(...) с разницей в формате [с, h, cf] = contourf(...), где cf определяет матрицу раскраски (рис. 4.13).

Рис. 4.14

Команда contour3(...) рисует линии уровня в пространственной интерпретации, например, результат выполнения команды:

»[c, h] = contour3(xord, yord, z2, 80);

обеспечивает формирование трехмерного изображения, представленного на рис. 4.14.

    1. Дополнительные возможности

Создание нового графического окна figure: командой figure(n) можно выбирать некоторое из созданных окон в качестве текущего. Включение (выключение) режима сохранения текущего графика: hold on / off, hold.

Вывод заголовков для графиков (в текущем окне): title('текст'), title(<имя функции-строки>), title(...,'PropertyName', 'PropertyValue', ...), h=title(...).

Вывод графиков в нескольких окнах рисунка: subplot(m n k), subplot(m, n, k), где m – число окон по горизонтали, n – по вертикали, k – номер окна. На рис. 4.15 представлены две области построения трехмерных изображений

командами:

»figure(2);

»subplot(2, 1, 1)

»plot3(x, y, z1), grid on;

»title('z1')

»subplot(2, 1, 2)

»mesh(xord, yord, z2)

»title('z2')

Рис. 4.15

Вывод текста для обозначения координатной оси: xlabel(...), ylabel(...), zlabel(...) – синтаксис аналогичен title(...). Вывод текста в указанной позиции графика: text(x, y, 'текст'), text(x, y, z, 'текст'), text(..., 'PropertyName', 'PropertyValue', ...), h = text(...), где x, y, z – координаты начала текста.

Вывод легенды: legend('текст1', 'текст2', ...), legend(..., pos), legend(M), legend(h, M), legend off, h = legend(...), где М – строковый массив (длина строк одинакова), off – удаляет пояснения к графику, pos – определяет позицию легенды ( –1 – справа от графика, 0 – в одном из четырех углов с минимумом потерь точек графика, 14 – в указанном углу, [x y] – в указанном месте).

Маркировка линий уровня, создаваемых командами contour, contour3, contourf: clabel(C, h), clabel(C, h, v), clabel(C, h, 'manual'), clabel(C), clabel(C,v), clabel(C, 'manual'): при наличии h маркировка на линиях, при наличии 'manual' – принудительная маркировка нажатием левой кнопки мыши или пробела (правая кнопка мыши или нажатие клавиши <Enter> завершает маркировку).

Подводя итоги, следующая последовательность команд демонстрирует на рис. 4.16 совокупное использование элементов оформления:

»subplot(1 1 1)

»t = [0 : pi/30 : 2*pi];

»a = sin(t); b = cos(t);

»x = 0 : 60;

»plot(x, a+b), hold on

»hp=plot(x, 'a', '+', x, 'b', '>');

»set(hp, 'LineWidth', 2)

»legend('a+b', 'a=sin(t)', 'b=cos(t)')

»title('y=sin(t)+cos(t)' ,'FontSize', 12, 'FontWeight', 'bold')

Рис. 4.16

    1. Специальная графика

Раздел специальной графики включает команды для построения диаграмм, гистограмм и прочих дискретных графиков.

»x = 0 : 0.5 : 5;

»y = sin(x);

»bar(x, y)

»x = 0 : 0.1 : 5;

»y1 = sin(x); y2 = cos(x);

»y = [y1; y2];

»bar(x, y, 'stack')

Рис. 4.17

»x = [ 10 3 0.5 2];

»pie(x, [0 1 0 1])

»x = –3 : 1 : 3;

»t = randn(50, 1);

»hist(t, x)

Рис. 4.18

Рис. 4.19

Столбцовые диаграммы реализуются командами bar и barh:

bar(y), bar(x, y), h = bar(...), где y – массив (одно- или двумерный), x – одномерный, упорядоченный по возрастанию массив (число смежных по горизонтали столбцов диаграммы равно числу столбцов массива у); можно указать параметры относительной ширины столбцов (1 – касание, >1 – перекрытие, <1 – с промежутками), или стиля ('group', 'stack'). Два варианта использования команды bar представлены на рис. 4.17. Команда barh(...) отличается лишь размещением столбцов не по вертикали, а по горизонтали.

Секторная диаграмма (рис. 4.18) реализуется командой h = pie(...), pie(x), pie(x, y), где y – вектор из 0 и 1 для отделения от диаграммы части секторов.

Построение гистограммы hist(y), hist(y, x), hist(y, n), [p, x] = hist(y, ...) реализует подсчет числа элементов по столбцам массива y в n (по умолчанию 10) интервалах, что показано на рис. 4.19.

Дискретный график stem(y), stem(x, y), stem(...,'fill'), stem(..., LineSpec), h=stem(...) аналогичен столбцовой диаграмме и выводит значения в виде отрезков с маркером ('fill' – закраска маркера), что представлено на рис. 4.20.

»x = –3 : 0.2 : 3;

»f = exp(–x.^2);

»stem(x, f)

»x = –3 : 0.2 : 3;

»f = exp(–x.^2);

»scatter(x, f, 'filled')

Рис. 4.20

Рис. 4.21

Вывод поля точек (рис. 4.21) выполняется командой scatter(x, y, ...) с возможностью указывать размер, цвет и заполненность маркера.

Существуют команды поворота графического объекта rotate, например:

»h = surf(...);

»rotate(h, [1 0 0 ], 90) % поворот по оси х на 90°

и команды поворота графического объекта с помощью мыши rotate3d on | ON | off (on – режим включен, off – выключен, ON – подавляет информацию о текущих углах).

    1. Графики поля градиентов quiver

Для построения графиков полей градиента служат команды quiver: quiver(X, Y, U, V) строит график поля градиентов в виде стрелок для каждой пары элементов массивов X и Y, причем элементы массивов U и V указывают направление и размер стрелок; quiver(U, V) строит векторы скорости в равнорасположенных точках на плоскости (х, y); quiver(U, V, S) или quiver(X, Y, U, V, S) автоматически масштабирует стрелки по сетке и затем вытягивает их по значению S; quiver(..., LINESPEC) использует для векторов указанный тип линии. Указанные в LINESPEC маркеры рисуются у оснований, а не на концах векторов. Для отмены любого вида маркера используйте спецификацию '.'. Спецификации линий, цветов и маркеров были подробно описаны в 4.1; quiver(..., 'filled') дает график с закрашенными маркерами; H = quiver(...) строит график и возвращает вектор дескрипторов. Пример применения команды quiver представлен на рис. 4.22.

»[x, y] = meshgrid(–1 : .2 : 1, –1 : .2 : 1);

»z = x.*exp(–x.^2 – y.^2);

»[px, py] = gradient(z, .2, .2);

»quiver(x, y, px, py, 2);

»[x, y] = meshgrid(–2 : .2 : 2, –1 : .15 : 1);

»z = x .* exp(–x.^2 – y.^2);

»[u, v, w] = surfnorm(x, y, z);

»quiver3(x, y, z, u, v, w);

»hold on, surf(x, y, z), hold off

Рис. 4.22

Рис. 4.23

Изображение поля градиентов стрелками дает наглядное представление о линиях поля, указывая области, куда эти линии впадают и откуда они исходят; quiver3 рисует 3D-график в виде стрелок (рис. 4.23).

    1. Редактор графиков

1. Вращение графиков мышью. Для получения исходного графика (рис. 4.24) введем команды:

»xord = –1 : .05 : 1;

»yord = –1 : .05 : 1;

»[x, y] = meshgrid(xord, yord);

»z1 = x .* sin(x.^2 – y.^2);

»z2 = y .* cos(x.^2 + y.^2);

»subplot(1 1 1)

»mesh(xord, yord, z1), hold on

»mesh(xord, yord, z2)

Рис. 4.24

Рис. 4.25

Можно поворачивать построенную фигуру мышью и наблюдать ее под разными углами. Используют последнюю справа кнопку панели инструментов с изображением пунктирной окружности со стрелкой. Круговыми движениями вращают график (рис. 4.25). Можно вращать и двумерные графики. Никакого программирования такое вращение не требует.

2. Контекстное меню графиков. Для переключения в режим редактирования графика используют кнопку Edit Plot (Редактировать график) с изображением курсора-стрелки. В этом режиме графиком можно управлять с помощью контекстного меню, вызываемого щелчком правой кнопки мыши (рис. 4.26). На график можно наносить стрелки, поясняющие надписи (кнопка с буквой А), и т. д.

Рис. 4.26

3. Основы форматирования двумерных графиков. В Matlab для форматирования графиков используются принципы визуального контроля за стилем (видом) всех объектов графиков:

1) форматирование линий графиков: есть возможность настройки и изменения свойств графиков. Команды Figure Properties (свойства фигуры) и Axis Properties (свойства осей) со всеми необходимыми настройками (рис. 4.27). Используют кнопку Edit Plot (Редактировать график), на панели инструментов окна графики с помощью двойного щелчка левой кнопкой мыши выбирают объект графика, вызвав тем самым окно его форматирования. В этом окне открыта вкладка Style (Стиль), которая устанавливает стиль отображения линии (ее вид, ширину и цвет, параметры маркеров, отмечающих опорные точки графиков);

2) форматирование линий и маркеров для графика нескольких функций: для графика нескольких функций можно форматировать линии и маркеры каждой кривой отдельно (рис. 4.27). Выполним следующие команды:

»x = –6 : .1 : 6;

»plot(x, sin(x), x, sin(x).^3, x, sin(x) .^5);

Рис. 4.27

3) форматирование маркеров опорных точек: на рис. 4.28 показано построение графика с маркерами опорных точек в виде окружностей;

Рис. 4.28

Рис. 4.29