fcontour

Графические контуры

Описание

пример

fcontour(f) строит графики линий символьных выражений f (x, y) на интервале по умолчанию x и y, который [-5 5].

пример

fcontour(f,[min max]) графики f через интервал min <x <max и min <y <max.

пример

fcontour(f,[xmin xmax ymin ymax]) графики f через интервал xmin <x <xmax и ymin <y <ymax. fcontour функция использует symvar чтобы упорядочить переменные и назначить интервалы.

пример

fcontour(___,LineSpec) использует LineSpec чтобы задать стиль линии и цвет. fcontour не поддерживает маркеры.

пример

fcontour(___,Name,Value) задает свойства линий с помощью одной или нескольких Name,Value аргументы в виде пар. Используйте эту опцию с любыми комбинациями входных аргументов в предыдущих синтаксисах. Name,Value настройки пар применяются ко всем нанесенным на график линиям. Чтобы задать опции для отдельных участков, используйте объекты, возвращенные fcontour.

fcontour(ax,___) Графики в осях ax объекта вместо текущей системы координат gca.

пример

fc = fcontour(___) возвращает объект контура функции. Используйте объект для запроса и изменения свойств определенного контурного графика. Для получения дополнительной информации см. FunctionContour Properties.

Примеры

Постройте контуры символьного выражения

Постройте графики контуров sin(x)+cos(y) по умолчанию область значений -5<x<5 и -5<y<5. Показать шкалу палитры. Найдите уровень контура, сопоставив цвет контура со значением шкалы палитры.

syms x y
fcontour(sin(x) + cos(y))
colorbar

Figure contains an axes. The axes contains an object of type functioncontour.

Графическое изображение контуров символьной функции

Постройте графики контуров f(x,y)=sin(x)+cos(y) по умолчанию область значений -5<x<5 и -5<y<5.

syms f(x,y)
f(x,y) = sin(x) + cos(y);
fcontour(f)

Figure contains an axes. The axes contains an object of type functioncontour.

Задайте интервал графического изображения

График sin(x)+cos(y) -π/2<x<π/2 и 0<y<5 путем определения интервала графического изображения в качестве второго аргумента fcontour.

syms x y
f = sin(x) + cos(y);
fcontour(f,[-pi/2 pi/2 0 5])

Figure contains an axes. The axes contains an object of type functioncontour.

Изменение стиля линии, цвета и ширины

Постройте графики контуров x2-y2 как синие, штриховые линии путем определения LineSpec вход. Задайте LineWidth от 2. Маркеры не поддерживаются fcontour.

syms x y
fcontour(x^2 - y^2,'--b','LineWidth',2)

Figure contains an axes. The axes contains an object of type functioncontour.

Постройте несколько контурных графиков на той же фигуре

Постройте несколько контурных графиков либо путем передачи входов в виде вектора, либо при помощи hold on последовательно построить график на одном и том же рисунке. Если вы задаете LineStyle и аргументы Name-Value, они применяются ко всем контурным графикам. Вы не можете задать отдельные LineStyle и аргументы пары "имя-значение" для каждого графика.

Разделите рисунок на два подграфика при помощи subplot. На первом подграфике постройте график sin(x)+cos(y) и x-y при помощи векторного входа. На втором подграфике постройте графики тех же выражений при помощи hold on.

syms x y
subplot(2,1,1)
fcontour([sin(x)+cos(y) x-y])
title('Multiple Contour Plots Using Vector Inputs')

subplot(2,1,2)
fcontour(sin(x)+cos(y))
hold on
fcontour(x-y)
title('Multiple Contour Plots Using Hold Command')

hold off

Figure contains 2 axes. Axes 1 with title Multiple Contour Plots Using Vector Inputs contains 2 objects of type functioncontour. Axes 2 with title Multiple Contour Plots Using Hold Command contains 2 objects of type functioncontour.

Изменение контурного графика после создания

Постройте графики контуров e-(x/3)2-(y/3)2+e-(x+2)2-(y+2)2. Задайте выход для создания fcontour возвращает объект графика.

syms x y
f = exp(-(x/3)^2-(y/3)^2) + exp(-(x+2)^2-(y+2)^2);
fc = fcontour(f)

Figure contains an axes. The axes contains an object of type functioncontour.

fc = 
  FunctionContour with properties:

     Function: [1x1 sym]
    LineColor: 'flat'
    LineStyle: '-'
    LineWidth: 0.5000
         Fill: off
    LevelList: [0.2000 0.4000 0.6000 0.8000 1 1.2000 1.4000]

  Show all properties

Измените LineWidth на 1 и LineStyle штриховая линия с помощью записи через точку для того, чтобы задать свойства объекта fc. Визуализация контуров, близких к 0 и 1 путем установки LevelList на [1 0.9 0.8 0.2 0.1].

fc.LineStyle = '--';
fc.LineWidth = 1;
fc.LevelList = [1 0.9 0.8 0.2 0.1];
colorbar

Figure contains an axes. The axes contains an object of type functioncontour.

Заливка площади между контурами

Заполните область между контурами путем установки Fill вход fcontour на 'on'. Если вы хотите вместо этого интерполировать затенение, используйте fsurf функция с ее опцией 'EdgeColor' установлено на 'none' далее следует команда view(0,90).

Создать график, похожий на закат, заполнив контуры

erf((y+2)3)-e(-0.65((x-2)2+(y-2)2).

syms x y
f = erf((y+2)^3) - exp(-0.65*((x-2)^2+(y-2)^2));
fcontour(f,'Fill','on')

Figure contains an axes. The axes contains an object of type functioncontour.

Задайте уровни для контурных Линий

Установите значения, при которых fcontour рисует контуры при помощи 'LevelList' опция.

syms x y
f = sin(x) + cos(y);
fcontour(f,'LevelList',[-1 0 1])

Figure contains an axes. The axes contains an object of type functioncontour.

Управление разрешением контурных линий

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

Разделите рисунок на две функции с помощью subplot. В первой подграфике постройте график контуров sin(x)sin(y). Углы квадратов не совпадают. Чтобы устранить эту проблему, увеличьте 'MeshDensity' на 200 во второй подграфике. Теперь углы встречаются, показывая, что увеличивая 'MeshDensity' вы увеличиваете разрешение графика.

syms x y
subplot(2,1,1)
fcontour(sin(x).*sin(y))
title('Default MeshDensity = 71')

subplot(2,1,2)
fcontour(sin(x).*sin(y),'MeshDensity',200)
title('Increased MeshDensity = 200')

Figure contains 2 axes. Axes 1 with title Default MeshDensity = 71 contains an object of type functioncontour. Axes 2 with title Increased MeshDensity = 200 contains an object of type functioncontour.

Добавление Заголовка и Подписей по осям и форматирование Тактов

График xsin(y)-ycos(x). Добавьте заголовок и подписи по осям. Создайте такты на оси X путем охвата пределов оси X с интервалами pi/2. Отобразите эти такты при помощи XTick свойство. Создайте метки оси X при помощи arrayfun для применения texlabel на S. Отображение этих меток при помощи XTickLabel свойство. Повторите эти шаги для оси Y.

Чтобы использовать LaTeX на графиках, смотрите latex.

syms x y
fcontour(x*sin(y)-y*cos(x), [-2*pi 2*pi])
grid on
title('xsin(y)-ycos(x) for -2\pi < x < 2\pi and -2\pi < y < 2\pi')
xlabel('x')
ylabel('y')
ax = gca;

S = sym(ax.XLim(1):pi/2:ax.XLim(2));
ax.XTick = double(S);
ax.XTickLabel = arrayfun(@texlabel, S, 'UniformOutput', false);

S = sym(ax.YLim(1):pi/2:ax.YLim(2));
ax.YTick = double(S);
ax.YTickLabel = arrayfun(@texlabel, S, 'UniformOutput', false);

Figure contains an axes. The axes with title xsin(y)-ycos(x) for -2\pi < x < 2\pi and -2\pi < y < 2\pi contains an object of type functioncontour.

Создание анимаций

Создавайте анимации путем изменения отображаемого выражения с помощью Function свойство указателя на функцию, а затем использование drawnow для обновления графика. Для экспорта в GIF см. раздел imwrite.

Варьируя i переменной от -,/8 до, анимируйте параметрическую кривую i sin (x) + i cos (y).

syms x y
fc = fcontour(-pi/8.*sin(x)-pi/8.*cos(y));
for i=-pi/8:0.01:pi/8
    fc.Function = i.*sin(x)+i.*cos(y);
    drawnow
		pause(0.05)
end

Входные параметры

свернуть все

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

Область значений графиков для x и y, заданный как вектор двух чисел. Значение по умолчанию область значений [-5 5].

Область значений графиков для x и y, заданный как вектор четырех чисел. Значение по умолчанию область значений [-5 5 -5 5].

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

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

Пример: '--r' задает красные штриховые линии

В этих двух таблицах перечислены стиль линии и опции цвета.

Спецификатор стиля линииОписание
-Сплошная линия (по умолчанию)
--Штриховая линия
:Пунктирная линия
-.Штрих-точка линия
Спецификатор цветаОписание

y

желтый

m

пурпурный

c

голубой

r

красный

g

зеленый

b

синий

w

белый

k

черный

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'MeshDensity',30

Перечисленные здесь свойства являются только подмножеством. Полный список см. в разделе Свойства FunctionContour.

Количество точек оценки в каждом направлении, заданное как число. Значение по умолчанию является 71. Поскольку fcontour использует адаптивную оценку, фактическое количество точек оценки больше.

Пример: 30

Заливка между контурными линиями, заданная как 'on' или 'off', или как числовое или логическое 1 (true) или 0 (false). Значение 'on' эквивалентно true, и 'off' эквивалентно false. Таким образом, можно использовать значение этого свойства как логическое значение. Значение сохранено в виде логического значения on/off типа matlab.lang.OnOffSwitchState.

  • Значение 'on' заполните пространства между контурными линиями цветом.

  • Значение 'off' оставляет незаполненными пробелы между контурными линиями.

Уровни контура, заданные как вектор значений z. По умолчанию, fcontour функция выбирает значения, которые охватывают область значений значений в ZData свойство.

Установка этого свойства устанавливает свойство связанного режима на ручное.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Режим выбора для LevelList, заданное как одно из следующих значений:

  • 'auto' - Определите значения на основе ZData значения.

  • 'manual' - Используйте вручную заданные значения. Чтобы задать значения, установите LevelList свойство. Когда режим 'manual', LevelList значения не изменяются, если вы меняете Function свойство или пределы.

Интервал между контурными линиями, заданный как скалярное числовое значение. Для примера задайте значение 2 для рисования контурных линий с шагами 2. По умолчанию LevelStep определяется при помощи ZData значения.

Установка этого свойства устанавливает свойство связанного режима на 'manual'.

Пример: 3.4

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Режим выбора для LevelStep, заданное как одно из следующих значений:

  • 'auto' - Определите значение на основе ZData значения.

  • 'manual' - Используйте заданное вручную значение. Чтобы задать значение, установите LevelStep свойство. Когда режим 'manual', значение LevelStepMode не меняется, когда Function свойство или изменение пределов.

Цвет контурных линий, заданный как 'flat', триплет RGB, шестнадцатеричный цветовой код, название цвета или краткое имя. Чтобы использовать другой цвет для каждой линии контура, задайте 'flat'. Цвет определяется значением контура линии, палитры и масштабированием значений данных в палитру. Для получения дополнительной информации о масштабировании цвета см. caxis.

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

Для пользовательского цвета укажите триплет RGB или шестнадцатеричный код цвета.

  • Триплет RGB представляет собой трехэлементный вектор-строку, элементы которого определяют интенсивность красных, зеленых и синих компонентов цвета. Интенсивность должна быть в области значений [0,1]; для примера, [0.4 0.6 0.7].

  • Шестнадцатеричный код цвета - это вектор символов или строковый скаляр, который начинается с хэш-символа (#), за которым следуют три или шесть шестнадцатеричных цифр, которые могут варьироваться от 0 на F. Значения не зависят от регистра. Таким образом, цветовые коды '#FF8800', '#ff8800', '#F80', и '#f80' являются эквивалентными.

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

Название цветаКраткое имяТриплет RGBШестнадцатеричный цветовой кодВнешность
'red''r'[1 0 0]'#FF0000'

'green''g'[0 1 0]'#00FF00'

'blue''b'[0 0 1]'#0000FF'

'cyan' 'c'[0 1 1]'#00FFFF'

'magenta''m'[1 0 1]'#FF00FF'

'yellow''y'[1 1 0]'#FFFF00'

'black''k'[0 0 0]'#000000'

'white''w'[1 1 1]'#FFFFFF'

'none'Не применяетсяНе применяетсяНе применяетсяНет цвета

Вот триплеты RGB и шестнадцатеричные цветовые коды для цветов по умолчанию MATLAB® использует на многих типах графиков.

Триплет RGBШестнадцатеричный цветовой кодВнешность
[0 0.4470 0.7410]'#0072BD'

[0.8500 0.3250 0.0980]'#D95319'

[0.9290 0.6940 0.1250]'#EDB120'

[0.4940 0.1840 0.5560]'#7E2F8E'

[0.4660 0.6740 0.1880]'#77AC30'

[0.3010 0.7450 0.9330]'#4DBEEE'

[0.6350 0.0780 0.1840]'#A2142F'

Стиль линии, заданный как одно из опций, перечисленных в этой таблице.

Стиль линииОписаниеРезультирующая линия
'-'Сплошная линия

'--'Штриховая линия

':'Пунктирная линия

'-.'Штрих-пунктирная линия

'none'Нет линииНет линии

Ширина линии, заданная как положительное значение в точках, где 1 точка = 1/72 дюйма. Если у линии есть маркеры, ширина линии также влияет на ребра маркера.

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

Выходные аргументы

свернуть все

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

Алгоритмы

fcontour присваивает символьные переменные в f на x ось, затем y ось, и symvar определяет порядок переменных, которые будут назначены. Поэтому имена переменных и осей могут не совпадать. Вызвать fcontour чтобы назначить x или y ее соответствующей оси, создайте символическую функцию для построения графика, затем передайте символьную функцию fcontour.

Для примера следующий код строит графики контура поверхностного f (x, y) = sin (y) двумя способами. Первый способ заставляет волны колебаться относительно оси y. Второй способ присваивает y оси x, потому что это первая (и единственная) переменная в символьной функции.

syms x y;
f(x,y) = sin(y);

figure;
subplot(2,1,1)
fcontour(f);
subplot(2,1,2)
fcontour(f(x,y)); % Or fcontour(sin(y));

Введенный в R2016a