Как построить столбцовую диаграмму в матлабе
Перейти к содержимому

Как построить столбцовую диаграмму в матлабе

Иллюстрированный самоучитель по MatLab

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

  • bar(x, Y) – строит столбцовый график элементов вектора Y (или группы столбцов для матрицы Y) со спецификацией положения столбцов, заданной значениями элементов вектора х, которые должны идти в монотонно возрастающем порядке;
  • bar(Y) – строит график значений элементов матрицы Y так же, как указано выше, но фактически для построения графика используется вектор х=1:m;
  • barU.Y,WIDTH) или BAR(Y,WIDTH) – команда аналогична ранее рассмотренным, но со спецификацией ширины столбцов (при WIDTH > 1 столбцы в одной и той же позиции перекрываются). По умолчанию задано WIDTH = 0.8.

Возможно применение этих команд и в следующем виде: bаг(…. ‘Спецификация’) для задания спецификации графиков, например типа линий, цвета и т. д., по аналогии с командой plot. Спецификация ‘stacked‘ задает рисование всех n столбцов в позиции m друг на друге.

Пример построения столбцовой диаграммы матрицы размером 12×3 приводится ниже:

На рисунке 6.6 представлен полученный график.

Рис. 6.6. Пример построения диаграммы с вертикальными столбцами

Помимо команды bar(…) существует аналогичная ей по синтаксису команда barh(…), которая" строит столбцовые диаграммы с горизонтальным расположением столбцов. Пример, приведенный ниже, дает построения, показанные на рис. 6.7.

Рис. 6.7. Пример построения столбцовой диаграммы с горизонтальными столбцами

Какое именно расположение столбцов выбрать, зависит от пользователя, использующего эти команды для представления своих данных.

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ РАБОТЫ. Высокоуровневая графика системы программирования MATLAB позволяет пользователю получать результаты вычислений в графическом виде

Высокоуровневая графика системы программирования MATLAB позволяет пользователю получать результаты вычислений в графическом виде. Среда MATLAB обладает развитыми возможностями визуализации и позволяет строить двухмерные и трехмерные графики функций, заданных в аналитическом виде, в виде векторов и матриц; дает возможность построения множества функций на одном графике; позволяет представлять графики разными цветами, типами точек и линий. Система способна также строить диаграммы, гистограммы и графики специальных функций, как в декартовой системе координат, так и в полярной системе координат.

Построение диаграмм и гистограмм в среде MATLAB

Наглядным способом представления векторных и матричных данных является построение диаграмм и гистограмм. Значение элемента вектора пропорционально высоте столбика диаграммы в случае построения столбчатой диаграммы или площади сектора для круговой диаграммы. Гистограмма используется для получения информации о распределении данных по заданным интервалам и представляет собой графическое изображение зависимости частоты попадания элементов выборкив определенный диапазон значений от соответствующего интервала группировки.

Представление векторных данных

Для построения диаграммы в среде MATLAB используется функция bar, имеющая следующий синтаксис:

Bar(coord, data, a)

где: coord – вектор с координатами точки разметки, data–вектор значений, которые требуется отобразить на диаграмме, а – параметр, определяющий ширину столбца диаграммы, по умолчанию равен 0,8.

Функция barможет иметь только один входной аргумент, являющийся вектором значений, отображаемых на диаграмме. Аргументом функции может быть как вектор-строка, так и вектор-столбец.

Функция barhпозволяет строить горизонтальную столбчатую диаграмму. Для построения объемных диаграмм применяется функция bar3. Синтаксис использования функция barh и bar3 аналогичен синтаксису функции bar.

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

Pie(data, parts)

где:data– вектор значений, которые требуется отобразить на круговой диаграмме, parts–аргумент, определяющий номер сектора круговой диаграммы, который необходимо отодвинуть от основного круга диаграммы, представляет собой вектор, состоящий из нуля и единиц, причем единица должна находиться в позиции, соответствующей номеру отделяемой части.

При построении круговой диаграммы в среде MATLAB происходит нормировка значений входного вектор, если сумма значений вектора превышает единицу. В том случае, если сумма значений меньше единицы, нормировка не происходит и строится круговая диаграмма с пропущенным сектором.

Для построения трехмерной круговой диаграммы используется функция pie3с аналогичным функцииpieсинтаксисом.

Для построения гистограмм в среде MATLAB существует функция hist, имеющая следующий синтаксис:

Hist(data, N)

где:data–входной вектор данных, значения которых требуется отобразить на гистограмме, N–число интервалов разбиения, по умолчанию равно 10.

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

Hist(data, centers)

где:data–входной вектор данных, значения которых требуется отобразить на гистограмме,centers–вектор, содержащий значения центров интервалов разбиения.

Для построения гистограммы по заданным значениям границ интервалов используется функция histcв сочетании с функцией bar. Функция histcимеет следующий синтаксис:

count=histc(data, interval)

где:data–входной вектор данных, значения которых требуется отобразить на гистограмме, interval– вектор, содержащий границы интервалов разбиения, count – выходной вектор, содержащий число величин, попавших в заданные интервалы.

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

bar(interval, count, ‘histc’)

Функция histможет использоваться не только для построения гистограммы, но и для получения информации о распределении данных во входном векторе. Для этого необходимо задать функцию hist следующим образом:

[count, intervals]=hist(data, N)

где:data–входной вектор данных, N–число интервалов разбиения, count –вектор, значения элементов которого соответствуют числу элементов из входного вектораdata,попавших в один изNинтервалов, intervals – вектор значения элементовкоторого определяют границы интервалов разбиения.

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

Представление матричных данных

Синтаксис функции bar, используемой для построения столбчатой диаграммы, для визуализации числовых значений, представленных в виде матрицы, не отличается от синтаксиса функции при оперировании с векторными массивами. В результате применения функции bar с входным аргументом в виде матрицы получается диаграмма сгруппированных данных. Количество групп данных равно числу строк матрицы, при этом каждая группа состоит из столбиков, количество которых равно числу столбцов матрицы.

Для построения диаграммы с накоплением используется функция barс дополнительным входным аргументом:

bar(data, ‘stack’)

где:data–входной вектор данных.

Диаграмма с накоплением формируется из исходной диаграммы сгруппированных данных, путем суммирования числовых значений элементов в пределах каждой группы, при этом каждая группа изображается в виде одного столбика, состоящего из частей, высота каждой части соответствует вкладe каждой величины в сумму внутри группы.

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

Area(data)

Диаграмма с областями находит свое применение при анализе изменяющихся величин и позволяет одновременно отслеживать значение вклада каждой величины в общую сумму.

Л-22 Элементы графической визуализации

В среде Mathcad фактически нет графиков функций в математическом понимании термина, а есть визуализация данных, находящихся в векторах и матрицах (то есть осуществляется построение как линий так и поверхностей по точкам с интерполяцией), хотя пользователь может об этом и не знать, поскольку у него есть возможность использования непосредственно функций одной или двух переменных для построения графиков или поверхностей соответственно. Так или иначе, механизм визуализации Mathcad значительно уступает таковому у Matlab, где достаточно иметь только вид функции, чтобы построить график или поверхность любого уровня сложности. По сравнению с Matlab, графика Mathcad имеет ещё такие недостатки, как: невозможность построения поверхностей, заданных параметрически, с непрямоугольной областью определения двух параметров; создание и форматирование графиков только через меню, что ограничивает возможности программного управления параметрами графики.

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

Графика в Matlab

Здесь мы ограничимся рассмотрением простейших графических средств, используемых в Matlab.

Построение графика функций одной переменной

Графики строятся в отдельных масштабируемых и перемещаемых окнах. Возьмем вначале простейший пример — построение графика синусоиды. Следует помнить, что Matlab строит графики функций по ряду точек, соединяя их отрезками прямых, т. е. осуществляя линейную интерполяцию функции в интервале между смежными точками. Зададим интервал изменения аргумента х от 0 до 10 с шагом 0.1. Для построения графика достаточно вначале задать вектор х=0:0.1:10, а затем использовать команду построения графиков plot(sin(x)). Результат показан на рис. 22.1.

>> plot(sin(x))

Вектор х задает интервал изменения независимой переменной от 0 до 10 с шагом 0.1. Почему взят такой шаг, а не, скажем, 1? Дело в том, что plot строит не истинный график функции sin(x), а лишь заданное числом элементов вектора х число точек. Эти точки затем просто соединяются отрезками прямых, т. е. осуществляется кусочно-линейная интерполяция данных графика. При 100 точках полученная кривая глазом воспринимается как вполне плавная, но при 10-20 точках она будет выглядеть состоящей из отрезков прямых.

Графики Matlab строит в отдельных окнах, называемых графическими окнами. Меню графического окна, показанного на рис. 22.1, отличается от меню главного окна Matlab. Например, в меню окна появились позиции Tools (Инструменты) и Insert (Вставка). Средства этой панели (мы их рассмотрим подробнее в дальнейшем) позволяют легко управлять параметрами графиков и наносить на них текстовые комментарии в любом месте.

Меню File (Файл) окна графики содержит типовые файловые операции, в частности сохранение графических окон в файлы, и их открытия. Однако они относятся не к файлам документов, а к файлам графиков. В частности, можно присваивать имя записываемым на диск рисункам с графиками.

Рис. 22.1. Пример построения графика синусоиды

Построение в одном окне графиков нескольких функций

Пойдем дальше и попытаемся построить графики сразу трех функций: sin(x), cos(x) и sin(x)/х.

»yl=sin(x); y2=cos(x); y3=sin(x)/x.

Отметим, что переменные yl, y2, y3 в результате выполнения данных команд являются не функциями, а векторами, имеющими ту же размерность, что и вектор x. Поэтому эти переменные не имеют явного указания аргумента в виде у(х). Обратите внимание, что точка с запятой позволяет писать несколько команд в одной строке.

Теперь можно использовать одну из форм команды plot:

>> plot(xl,fl,x2,f2,x3,f3. )

где xl, x2, xЗ. — векторы аргументов функций (в нашем случае все они равны х), a f1, f2, f3. — векторы значений функций, графики которых строятся в одном окне. В нашем случае для построения графиков указанных функций мы должны записать следующее:

» plot(x,yl,x,y2,x,y3)

Можно ожидать, что Matlab в этом случае построит, как обычно, точки графиков этих функций и соединит их отрезками линий. Но если мы выполним эти команды, то графика третьей функции не получим. Не исключен даже сбой в работе программы. Причина этого в том, что при вычислении функции y3=sin(x)/x, если х представляет собой массив (вектор), то нельзя использовать оператор матричного деления /.

Этот пример еще раз наглядно указывает на то, что чисто поверхностное применение даже такой мощной системы, как Matlab, иногда приводит к досадным срывам. Чтобы все же получить график, надо вычислять отношение sin(x) к х с помощью оператора поэлементного деления массивов ./ (точка+слэш).

Рис. 22.2. Построение графиков трех функций

Обратите внимание на то, что хотя на этот раз Matlab построил графики всех трех функций, в окне командного режима может появиться предупреждение о делении на 0 — в момент, когда х=0 (при соответствующих настройках Matlab). Это говорит о том, что Matlab в некоторых случаях «может не знать» о том, что неопределенность sin(x)/x вида 0/0 устранимая и дает 1. Это недостаток практически всех систем для численных вычислений.

Графическая функция fplot

Разумеется, Matlab имеет средства для построения графиков и таких функций, как sin(x)/x, которые имеют устранимые неопределенности. Не обсуждая эти средства подробно, просто покажем, как это делается, с помощью другой графической команды —

fplot('f(x)', [xmin xmax])

Она позволяет строить функцию, заданную в символьном виде, в интервале изменения аргумента х от xmin до xmax без фиксированного шага изменения х. Один из вариантов ее применения демонстрирует рис. 22.3.

» clear

» grid on

Хотя в процессе вычислений предупреждение об ошибке (деление на 0) выводится, но график строится правильно, т.е. при х=0 sin(x)/x = l. Обратите также внимание на две используемые команды: clear (очистить)— очистка графического окна и grid on (сетка)— включение отображения сетки, которая строится пунктирными линиями.

Рис. 22.3. Построение графика sin(x)/x функцией fplot

Столбцовые диаграммы

В прикладных расчетах часто встречаются графики, именуемые столбцовыми диаграммами, отражающие содержание некоторого вектора V. При этом каждый элемент вектора представляется столбцом, высота которого пропорциональна значению элемента. Столбцы нумеруются и масштабируются по отношению к максимальному значению наиболее высокого столбца. Выполняет построение такого графика команда bar(V) (рис. 22.4).

V =

1 2 3 4 5 6 7 8

>> bar(V)

Рис. 22.4. Построение столбцовой диаграммы значений элементов вектора

Столбцовые диаграммы — лишь один из многих типов графиков, которые может строить система Matlab. Особенно часто столбцовые диаграммы используются при представлении данных финансово-экономических расчетов.

Построение трехмерных графиков

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

» [X,Y]=meshgrid(-5:0.1:5);

» meshc(X,Y,Z)

Окно с построенным графиком показано на рис. 22.5.

Рис. 22.5. Окно с графиками поверхности и ее проекции на плоскость под фигурой

В Matlab можно в считанные секунды изменить задающую поверхность функцию Z(X, Y) и тут же получить новый график поверхности с окраской, в данном случае заданной вектором Z, и с ее проекцией на плоскость XY.

Мы ограничимся этими примерами построения графиков как достаточно простыми и типовыми. Из них следует важный вывод — для решения той или иной частной задачи надо знать соответствующие команды и функции.

Вращение графиков мышью

Можно поворачивать построенную фигуру мышью и наблюдать ее под разными углами. Рассмотрим эту возможность на примере построения логотипа системы Matlab — мембраны. Для этого, введя команду membrane, получим график, представленный на рис.22. 6.

Рис. 22.6. Построение мембраны — логотипа системы Matlab

Для вращения графика достаточно активизировать кнопку панели инструментов с изображением пунктирной окружности со стрелкой (рис. 22.6).

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

Контекстное меню графиков

Для переключения в режим редактирования графика можно ваполнить команду меню Tools / Edit Plot или щелкнуть на кнопке Edit Plot (Редактировать график) с изображением курсора-стрелки. В этом режиме графиком можно управлять с помощью контекстного меню, вызываемого щелчком правой кнопки мыши. Вид этого меню при курсоре, расположенном в графика вне построенных графических объектов, показан на рис. 22.7. С помощью мыши можно также выделить график. Щелчок левой клавишей выводит рамку вокруг рисунка (см. рис. 22.7).

Рис. 22.7. График в состоянии редактирования и контекстное меню

Форматирование свойств графиков

Matlab имеет возможность легко настраивать и корректировать свойства графиков с помощью специальных средств. Одним из них является редактор свойств (Property Editor). Редактор свойств можно вызвать через команду главного меню View / Property Editor или через команду контекстного меню Show Property Editor. Вид редактора свойств зависит от того, какой элемент графика выделен. Например, на рис. 22.8 выделена рамка, а на рис. 22.9 выделена линия графика.

Рис. 22.8. Выделена рамка

Рис. 22.9. Выделена линия графика

Форматирование линий и маркеров для графика нескольких функций

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

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

Обратите внимание на то, как заданы степени синуса. Записать эти выражения в виде sin(x)^2 и cos(x)^2 будет грубейшей ошибкой, поскольку х здесь вектор. Операторы .^ в данном случае дают поэлементное возведение в степень, что и нужно для построения графиков этих функций. Рис. 10 показывает пример такого форматирования для графика, полученного исполнением этих команд.

Рис. 22.10. Пример форматирования для графика трех функций

Надписи на графиках могут быть сделаны на русском языке, только если компьютер корректно оснащен должным набором шрифтов. Средства форматирования надписей дают обширные возможности по выбору набора шрифтов, их стиля, размеров символов и их цвета.

Нанесение надписей и стрелок на график

Надписи на график можно нанести с помощью панели инструментов Plot Edit Toolbar (рис. 22.11). Место надписи фиксируется щелчком мыши.

Рис. 22.11. Инструменты для нанесения надписей

На рис. 22.12 показан отформатированный график с тремя надписями. Надписи сделаны с разным размером символов и разным стилем. Обратите внимание, что при задании на надписи возведения в степень знаком ^ надпись на экране отображается в естественном математическом виде (степень в виде верхнего индекса).

Рис. 22.12. Нанесение надписей на график

Как видно на рисунке, параметры выделенной надписи можно изменять как минимум тремя способами:

  • с помощью редактора свойств;
  • с помощью панели инструментов Plot Edit Toolbar;
  • с помощью контекстного меню.

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

Построение легенды на графике

Дополнительно можно изменить размеры графика (см. меню Tools (Инструменты) и его команды Zoom In (Увеличить)и Zoom Out (Уменьшить)), выполнить поворот графика мышью (команда Rotate 3D) и подключить к графику легенду — пояснение в виде отрезков линий со справочными надписями, размещаемое внутри графика или около него. Поскольку наш график содержит три кривые, то легенда представляет собой обозначение этих трех линий в правом верхнем углу рисунка (рис. 22.13). Каждая линия имеет тот же цвет, что и на графике (и тот же стиль).

Рис. 22.13. График с легендой

Текстовая часть легенды берется из параметра Display Name редактора свойств (см. рис. 22.14).

Рис. 22.14. Задание имени графика для легенды в редакторе свойств для выделенного графика

Отметим, что все описанные возможности форматирования графиков доступны и программным способом, путем задания соответствующих графических команд, параметров и примитивов. Например команда text(х,у, 'legend') позволяет задать надпись 'legend' с началом, имеющим координаты (х, у).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *