Progress-servis55.ru

Новости из мира ПК
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Matlab plot параметры

Matlab plot параметры

2. Оформление графиков функций.

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

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

x = 0 : 0.1 : 3; y = sin( x );

plot( x, y, ‘r-‘, x, y, ‘ko’ )

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

вычисляемых точках проставляются чёрные окружности. Здесь функция plot дважды строит график одной и той же функции, но в двух разных стилях. Первый из этих стилей отмечен как ‘r-‘, что означает проведение линии красным цветом (буква r), а штрих означает проведение сплошной линии. Второй стиль, помеченный как ‘ko’ означает проведение чёрным цветом (буква k) окружностей (буква o) на месте вычисляемых точек.

В общем случае, функция

plot( x1, y1, s1, x2, y2, s2, )

позволяет объединить несколько графиков функций y1(x1), y2(x2), , проведя их со стилями s1, s2,

В случае функции вида

plot( x1, y1, s1, x1, y1, s2 )

мы можем провести линию графика единственной функции y1(x1) одним цветом, а точки на нём (вычисляемые точки) — другим цветом.

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

МаркерТип линии
непрерывная
штриховая
:пунктирная
-.штрих-пунктирная

Второй маркер задаёт цвет:

МаркерЦвет линии
cголубой
mфиолетовый
yжёлтый
rкрасный
gзелёный
bсиний
wбелый
kчёрный

Последний маркер задаёт тип проставляемых «точек»:

МаркерТип точки
.точка
+плюс
*звёздочка
oкружок
xкрестик

Можно указывать не все три маркера. Тогда используются необходимые маркеры, установленные «по умолчанию». Порядок, в котором указываются маркеры, не является существенным, то есть ‘r+-‘ и ‘-+r’ приводят к одинаковому результату.

Если в строке стиля поставить маркер типа точки, но не проставить маркер на тип линии, то тогда отображаются только вычисляемые точки, а непрерывной линией они не соединяются.

Наиболее мощным способом оформления графиков функций (и выполнения других графических работ) является дескрипторный метод, полное изучение которого относится к так называемой низкоуровневой графике системы MATLAB и выходит за рамки настоящего пособия. Мы, однако, приведём сейчас (и позже) некоторые простые примеры.

Выше мы оформляли график функции sin с помощью непрерывной красной линии и чёрных кружков. Теперь попробуем ограничиться лишь непрерывной линией, но очень толстой. Как это можно сделать? Вот простое решение на базе дескрипторной графики:

x = 0 : 0.1 : 3; y = sin( x );

hPlot = plot( x, y );

set( hPlot, ‘LineWidth’, 7 );

Функция plot через опорные (вычисленные) точки с координатами x, y проводит отрезки прямых линий. Прямые линии в системе MATLAB представляют собой графические объекты типа Line. Эти объекты имеют огромное число свойств и характеристик, которые можно менять. Доступ к этим объектам осуществляется по их описателям (дескрипторам; handles).

Описатель объекта Line, использованного для построения нашего графика, возвращается функцией plot. Мы его запоминаем для дальнейшего использования в переменной hPlot. Затем этот описатель предлагается функции set для опознания конкретного графического объекта. Именно для такого опознанного объекта функция set изменяет характеристики, которые указаны в других аргументах при вызове функции set. В нашем примере мы указали свойство ‘LineWidth’ (толщина линии), для которого задали новое значение 7 (а по умолчанию — 0.5). В результате получается следующая картина:

Текущее значение любого параметра (атрибута; характеристики) графического объекта можно узнать с помощью функции get. Например, если после получения показанного на рисунке графика ввести и исполнить команду

w )

то для переменной width будет получено значение 7.

Теперь от оформления непосредственно линий перейдём к оформлению осей системы координат, к надписям на осях и так далее. MATLAB выбирает пределы на горизонтальной оси равными указанным для независимой переменной. Для зависимой переменной по вертикальной оси MATLAB вычисляет диапазон изменения значений функции. Затем этот вычисленный диапазон приписывается вертикальной оси системы координат, так что график функции оказывается как бы вписанным в прямоугольник.

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

axis( [ xmin, xmax, ymin, ymax ] )

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

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

чтобы получше разглядеть вершину синусоиды:

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

Теперь изменим количество числовых отметок на осях. Их может показаться недостаточно (на горизонтальной оси последнего рисунка их всего три — для значений 1.5 , 2 и 2.5).

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

Читать еще:  Sprintf matlab описание

В итоге, следующий фрагмент кода

hAxes = gca;

set( hAxes, ‘xtick’, [ 1.5, 1.75, 2.0, 2.25, 2.5 ] )

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

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

Если требуется разместить надпись в произвольном месте рисунка — применяем функцию text:

text( x, y, ‘some text’)

Общий заголовок для графика проставляется функцией title. Кроме того, используя команду

grid on

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

title( ‘Function sin(x) graph’ );

xlabel( ‘x coordinate’ ); ylabel( ‘sin(x)’ );

text( 2.1, 0.9, ‘leftarrowsin(x)’ ); grid on;

придаём графику функции следующий вид:

Надпись функцией text помещается, начиная от точки с координатами, указанными первыми двумя аргументами. Специальные символы вводятся внутри текста после символа («обратная косая черта»). В примере мы ввели таким образом специальный символ «стрелка влево». Обозначения для специальных символов совпадают с таковыми в системе подготовки научных текстов TeX.

Matlab plot параметры

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

3.1. Функция plot

Рассмотрение возможностей MatLab по визуализации данных начнем с двумерных графиков, которые обычно строятся с помощью функции plot(). Множество вариантов работы данной функции лучше всего рассмотреть на конкретных примерах.

Предположим, что требуется вывести график функции синуса в диапазоне от 0 до . Для этого зададим вектор (множество) точек по оси Ox, в которых будут отображаться значения функции синуса:

В результате получится вектор столбец со множеством значений от 0 до и с шагом 0,01. Затем, вычислим множество значений функции синуса в этих точках:

и выведем результат на экран

В результате получим график, представленный на рис. 3.1.

Представленная запись функции plot() показывает, что сначала записывается аргумент со множеством точек оси Ох, а затем, аргумент со множеством точек оси Oy. Зная эти значения, функция plot() имеет возможность построить точки на плоскости и линейно их интерполировать для придания непрерывного вида графика.

Рис. 3.1. Отображение функции синуса с помощью функции plot().

Функцию plot() можно записать и с одним аргументом x или y:

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

Анализ рис. 3.2 показывает, что в случае одного аргумента функция plot() отображает множество точек по оси Oy, а по оси Оx происходит автоматическая генерация множества точек с единичным шагом. Следовательно, для простой визуализации вектора в виде двумерного графика достаточно воспользоваться функцией plot() с одним аргументом.

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

x = 0:0.01:pi;
y1 = sin(x);
y2 = cos(x);
plot(x,y1,x,y2);

Результат работы данного фрагмента программы представлен на рис. 3.3.

Рис. 3.2. Результаты работы функции plot() с одним аргументом:

а – plot(x); б – plot(y).

Рис. 3.3. Отображение двух графиков в одних координатных осях.

Аналогичным образом можно построить два графика, используя один аргумент функции plot(). Предположим, что есть два вектора значений

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

которые требуется отобразить на экране. Для этого объединим их в двумерную матрицу

в которой столбцы составлены из векторов y1 и y2 соответственно. Такая матрица будет отображена функцией

plot([y1’ y2’]); % апострофы переводят вектор-строку
% в вектор-столбец

в виде двух графиков (рис. 3.4).

Рис. 3.4. Отображение двумерной матрицы в виде двух графиков.

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

x1 = 0:0.01:2*pi;
y1 = sin(x1);

x2 = 0:0.01:pi;
y2 = cos(x2);

plot(x1, y1); % рисование первого графика
figure; % создание 2-го графического окна
plot(x2, y2); % рисование 2-го графика во 2-м окне

Функция figure, используемая в данной программе, создает новое графическое окно и делает его активным. Функция plot(), вызываемая сразу после функции figure, отобразит график в текущем активном графическом окне. В результате на экране будут показаны два окна с двумя графиками.

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

Читать еще:  Matlab для чего нужен

x1 = 0:0.01:2*pi;
y1 = sin(x1);

x2 = 0:0.01:pi;
y2 = cos(x2);

figure(1); %создание окна с номером 1
plot(x1, y1); % рисование первого графика
figure(2); % создание графического окна с номером 2
plot(x2, y2); % рисование 2-го графика во 2-м окне

При выполнении данной программы на экране всегда будут отображены только два графических окна с номерами 1 и 2, и в них показаны графики функций синуса и косинуса соответственно.

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

Рассмотрим пример отображения двух графиков друг под другом вышеприведенных функций синуса и косинуса.

x1 = 0:0.01:2*pi;
y1 = sin(x1);

x2 = 0:0.01:pi;
y2 = cos(x2);

figure(1);
subplot(2,1,1); % делим окно на 2 строки и один столбец
plot(x1,y1); % отображение первого графика
subplot(2,1,2); % строим 2-ю координатную ось
plot(x2,y2); % отображаем 2-й график в новых осях

Результат работы программы показан на рис. 3.5.

Аналогичным образом можно выводить два и более графиков в столбец, в виде таблицы и т.п. Кроме того, можно указывать точные координаты расположения графика в графическом окне. Для этого используется параметр position в функции subplot():

subplot(‘position’, [left bottom width height]);

где left – смещение от левой стороны окна; bottom – смещение от нижней стороны окна; w >

Рис. 3.5. Пример работы функции subplot.

Ниже представлен фрагмент программы отображения графика функции синуса в центре графического окна. Результат работы показан на рис. 3.6.

x1 = 0:0.01:2*pi;
y1 = sin(x1);

subplot(‘position’, [0.33 0.33 0.33 0.33]);
plot(x1,y1);

В данном примере функция subplot() смещает график на треть от левой и нижней границ окна и рисует график с шириной и высотой в треть графического окна. В результате, получается эффект рисования функции синуса по центру основного окна.

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

Рис. 3.6. Пример работы функции subplot с параметром position.

© 2020 Научная библиотека

Копирование информации со страницы разрешается только с указанием ссылки на данный сайт

Некоторые полезные средства настройки графиков (plot) в MATLAB

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

Входными данными служили показания магнитного компаса (МК), синхронно наблюдаемые показания гирокомпаса (ГК), поправка ГК и значение магнитного склонения для района, в котором проходили измерения.

Все данные были занесены в таблицу и разделены из 10 столбцов с входными данными и 25 строк – значений входных данных для каждого из вариантов. Для удобства считывания данных в MATLAB они были записаны в виде текстового файла и импортировались в рабочее пространство с помощью функции importdata.

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

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

И получен следующий график:

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

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

Собственно, функция построения графика, в которую передаются данные и параметры. Помимо очевидных входных данных параметром функции является тип отображаемой линии, закодированный трехсимвольным сочетанием. В данном случае “b” – blue, цвет линии; “o” – вид маркера, которым обозначаются точки графика и “-” – тип линии, в данном случае – сплошная.

Ниже привожу список параметров для настройки отображаемой линии.

Маркер Цвет линии
c голубой
m фиолетовый
y желтый
r красный
g зеленый
b синий
w белый
k черный

Маркер Тип линии
— непрерывная
— — штриховая
: пунктирная
-. штрих-пунктирная

Маркер Тип маркера
. точка
+ знак «плюс»
* знак «звездочка»
о круг
х знак «крест»

Команда, которой включается сетка на графике.

Подписи для графика и соответствующих осей. Здесь “circ” кодировка символа градуса.

Команда управления осями. В данном случае выставлен параметр “auto” – автоматическая расстановка осей. Здесь-то меня и не устроила работа MATLAB, т.к. автоматически оси не пристыковывались к крайним значениям графика, а «добавляли» лишнее пространство по оси “X”.

С помощью команды “help axis” я нашел еще несколько вариантов параметра для осей, в частности попробовал параметр “tight”, который должен был пристыковывать границы графика к крайним значениям кривой. Однако результат и этого параметра меня не удовлетворил т.к. результат выглядел следующим образом:

Читать еще:  Логарифмический масштаб matlab

График выглядит «зажатым», к тому же «теряются» части кривой находящиеся между максимальными значениями.

Для получения наглядного результата пришлось настроить ось “X” отдельно с помощью следующих команд:

Последняя функция задает граничные значения отдельно для оси “X”, что позволило мне ограничить график максимальными значениями по данной оси.

И последняя команда:

Позволила настроить подписи и шаг для оси “X”. Функция “set” является достаточно общей, ее работа зависит от передаваемых параметров. В данном случае “gca” – означает, что параметры будут устанавливаться для сетки графика, “ XTick ” – означает, что будет управляться подпись оси “X”, а параметр “0:45:360” – задает минимальное значение, шаг и максимальное значение.

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

Надеюсь, что эта статья будет полезной не только для начинающих MATLAB, но и для опытных пользователей.

В окончании хотел бы отметить полезность команды “help” – она не только позволяет получить необходимую информацию по функции или команде из командной строки, но и сделать это значительно быстрее, чем через поиск в справке MATLAB.

Matlab plot параметры

plot(Y) plots the columns of Y versus their index if Y is a real number. If Y is complex, plot(Y) is equivalent to plot(real(Y),imag(Y)) . In all other uses of plot , the imaginary component is ignored.

plot(X1,Y1. ) plots all lines defined by Xn versus Yn pairs. If only Xn or Yn is a matrix, the vector is plotted versus the rows or columns of the matrix, depending on whether the vector’s row or column dimension matches the matrix.

plot(X1,Y1, LineSpec . ) plots all lines defined by the Xn,Yn,LineSpec triples, where LineSpec is a line specification that determines line type, marker symbol, and color of the plotted lines. You can mix Xn,Yn,LineSpec triples with Xn,Yn pairs: plot(X1,Y1,X2,Y2,LineSpec,X3,Y3) .

plot(. ‘ PropertyName ‘,PropertyValue. ) sets properties to the specified property values for all line graphics objects created by plot . (See the «Examples» section for examples.)

h = plot(. ) returns a column vector of handles to line graphics objects, one handle per line.

If you do not specify a color when plotting more than one line, plot automatically cycles through the colors in the order specified by the current axes ColorOrder property. After cycling through all the colors defined by ColorOrder , plot then cycles through the line styles defined in the axes LineStyleOrder property.

Note that, by default, MATLAB resets the ColorOrder and LineStyleOrder properties each time you call plot . If you want changes you make to these properties to persist, then you must define these changes as default values. For example,

sets the default ColorOrder to use only the color black and sets the LineStyleOrder to use solid, dash-dot, dash-dash, and dotted line styles.

Additional Information

  • See the «Creating 2-D Graphs» and «Labeling Graphs» in Using MATLAB Graphics for more information on plotting.
  • See LineSpec for more information on specifying line styles and colors.

Specifying the Color and Size of Markers

You can also specify other line characteristics using graphics properties (see line for a description of these properties):

  • LineWidth — specifies the width (in points) of the line.
  • MarkerEdgeColor — specifies the color of the marker or the edge color for filled markers (circle, square, diamond, pentagram, hexagram, and the four triangles).
  • MarkerFaceColor — specifies the color of the face of filled markers.
  • MarkerSize — specifies the size of the marker in units of points.

For example, these statements,

produce this graph.

Specifying Tick Mark Location and Labeling

You can adjust the axis tick-mark locations and the labels appearing at each tick. For example, this plot of the sine function relabels the x-axis with more meaningful values,

Now add axis labels and annotate the point -pi/4, sin(-pi/4).

Adding Titles, Axis Labels, and Annotations

MATLAB enables you to add axis labels and titles. For example, using the graph from the previous example, add an x- and y-axis label,

Now change the line color to red by first finding the handle of the line object created by plot and then setting its Color property. In the same statement, set the LineWidth property to 2 points.

See the text String property for a list of symbols and how to display them.

See the Plot Editor for information on plot annotation tools in the figure window toolbar.

See Basic Plots and Graphs for related functions.

Ссылка на основную публикацию
Adblock
detector