
- •2.5.2. Специальные типы двумерных графиков.
- •2.5.2.1.Диаграммы.
- •2.5.2.2.Гистограммы векторных данных.
- •2.6. Низкоуровневая графика.
- •2.6.1.Основы дескрипторной графики.
- •2.6.1.1. Графические объекты
- •2.6.1.2. Иерархия объектов.
- •2.6.2. Функции set и get, текущие объекты.
- •2.6.3.Указатели на объекты.
2. MATLAB.
Лекция 9 (по Matlab - №4).
2.5.2. Специальные типы двумерных графиков.
Функции для просмотра графических команд: help graphics - основных; help graph2d – двумерных; help graph3d - трехмерных; help specgraph - специализированных.
Наглядным способом представления векторных и матричных данных являются диаграммы. Значение элемента вектора пропорционально высоте столбика диаграммы (в случае столбчатой диаграммы) или площади сектора диаграммы (для круговой диаграммы). Гистограммы используются для получения информации о распределении данных по заданным интервалам.
2.5.2.1.Диаграммы.
Отображение вектора в виде столбчатой диаграммы осуществляется функцией bar . По горизонтальной оси откладывается номер элемента вектора, а по вертикальной — его значение. Аргументом функции bar может быть как вектор-строка, так и вектор-столбец; диаграммы при этом будут одинаковые. Функция barh строит горизонтальную столбчатую диаграмму, т. е. повернутую на 90 градусов:
Для построения объемных диаграмм применяется функция bar3. При этом по оси Х (ось вправо-вниз) откладываются для вектора – номера элементов, а для матрицы - номера строк в порядке нарастания; по оси Y (ось от нас) для массивов – номера столбцов, а по высоте (ось Z) – значения; на рисунке слева аргумент – вектор, а справа - массив:
Функция bar может иметь 2 аргумента, если разметку горизонтальной оси задать вектором с возрастающими значениями. В этом случае первый аргумент bar является вектором с координатами точек разметки, а второй — вектором значений, которые требуется отобразить на диаграмме. Удобно использовать этот способ построения диаграммы для отображения значений элементов векторов в зависимости не от их номера, а, например, от времени, если в вектор записаны результаты измерений в некоторые моменты времени. Важно, чтобы длины этих векторов совпадали, иначе будет выдано сообщение об ошибке.
» time = [0.0 0.1 0.2 0.4 0.5 0.8 1.1 1.3];
» data = [2.85 2.93 2.99 3.26 3.01 2.25 2.09 1.79];
» bar(time, data)
Пропущенные столбики соответствуют тем моментам времени, в которые измерения не производились. Функция bar может иметь 3-ий аргумент - ширину столбцов. По умолчанию ширина равна 0.8. Диаграмма без промежутков между столбиками получается, если установить ширину равной 1. Выбор значений >1 приводит к перекрывающимся столбикам. Например, изображение функции x(t) = sin(t)*et на отрезке [-1,1] в виде столбчатой диаграммы без промежутков имеет следующий вид:
Если требуется оценить вклад каждого из элементов вектора в общую сумму значений его элементов, то удобно построить круговую диаграмму при помощи функции pie. На такой диаграмме площади секторов соответствуют процентному вкладу каждого из элементов вектора в общую сумму, т. е. MATLAB нормирует значения, вычисляя data/sum(data):
На этой диаграмме 1-ый элемент изображен синим цветом. Зоны следующих элементов размещаются против часовой стрелки.
Текстовые пояснения к секторам диаграммы более информативны, чем только числовые значения долей в процентах. Добавить пояснения можно двумя способами. Один из них — воспользоваться редактором графиков, который вызывается функцией plottools [1, глава 4, с. 178].
Другой способ - применение специальных команд низкоуровневой графики (автоматическое размещение подписей к данным с использованием команд низкоуровневой графики рассматривается в [1, глава 9]).
Если сумма значений элементов вектора-аргумента функции pie равна 1, то MATLAB строит полный круг и применяет нормировку. Если сумма < 1, то нормировка не производится и получается круг с пропущенным сектором (на рисунке справа сумма значений элементов вектора-аргумента равна 0.67) :
Можно отодвинуть от центра диаграммы сектор, соответствующий некоторому элементу. Это можно проделать, задав вторым аргументом функции pie вектор, состоящий из единиц и нулей, причем единица должна стоять в позиции, соответствующей номеру отделяемой части. Диаграмма с отделенным сектором, соответствующим второму элементу (значению 13.4), имеет следующий вид:
Можно отделить несколько секторов, расположив единицы во вспомогательном векторе parts на соответствующих позициях. Важно только, чтобы размеры векторов-аргументов были одинаковы. Создать вектор соответствующего размера с нулевыми значениями элементов можно с помощью выражения parts = zeros(size(data)); затем останется только присвоить значения, равные 1, соответствующим элементам.
Есть возможность создать трехмерную круговую диаграмму с помощью функции pie3 :