закрашенная фигура

Создайте один или несколько заполненных полигонов

Синтаксис

patch(X,Y,C)
patch(X,Y,Z,C)
patch('XData',X,'YData',Y)
patch('XData',X,'YData',Y,'ZData',Z)
patch('Faces',F,'Vertices',V)
patch(S)
patch(___,Name,Value)
patch(ax,___)
p = patch(___)

Описание

пример

patch(X,Y,C) создает один или несколько заполненных полигонов с помощью элементов X и Y как координаты для каждой вершины. patch соединяет вершины в порядке, что вы задаете их. Чтобы создать один полигон, задайте X и Y как векторы. Чтобы создать несколько полигонов, задайте X и Y как матрицы, где каждый столбец соответствует полигону. C определяет цвета полигона.

patch(X,Y,Z,C) создает полигоны в 3-D координатах с помощью X, Y и Z. Чтобы просмотреть полигоны в 3-D представлении, используйте команду view(3). C определяет цвета полигона.

patch('XData',X,'YData',Y) подобно patch(X,Y,C), за исключением того, что вы не должны задавать цветные данные для 2D координат.

patch('XData',X,'YData',Y,'ZData',Z) подобно patch(X,Y,Z,C), за исключением того, что вы не должны задавать цветные данные для 3-D координат.

пример

patch('Faces',F,'Vertices',V) создает один или несколько полигонов, где V задает значения вершины, и F задает который вершины соединиться. Определение только уникальных вершин и их матрицы связи может уменьшать размер данных, когда существует много полигонов. Задайте одну вершину на строку в V. Чтобы создать один полигон, задайте F как вектор. Чтобы создать несколько полигонов, задайте F как матрицу с одной строкой на полигон. Каждая поверхность не должна иметь того же количества вершин. Чтобы задать различные количества вершин, заполните F значениями NaN.

пример

patch(S) создает один или несколько полигонов с помощью структуры S. Поля структуры соответствуют именам свойства исправления и значениям полей, соответствующим значениям свойств. Например, S может содержать поля Faces и Vertices.

пример

patch(___,Name,Value) создает полигоны и задает один или несколько аргументов пары "имя-значение" использования свойств исправления. Закрашенная фигура является объектом, который содержит данные для всех созданных полигонов. Можно задать свойства исправления с любой из комбинаций входных аргументов в предыдущих синтаксисах. Например, 'LineWidth',2 устанавливает ширину контура для всех полигонов к 2 точкам.

patch(ax,___) создает закрашенную фигуру в осях, заданных ax вместо в текущей системе координат (gca). Опция ax может предшествовать любой комбинации входных аргументов в предыдущих синтаксисах.

p = patch(___) возвращает объект закрашенной фигуры, который содержит данные для всех полигонов. Используйте p, чтобы запросить и изменить свойства объекта закрашенной фигуры после того, как это будет создано. Для списка свойств и описаний, смотрите Свойства исправления.

Примеры

свернуть все

Создайте один полигон путем определения (x, y) координаты каждой вершины. Затем добавьте еще два полигона в фигуру.

Создайте красный квадрат с вершинами в (0,0), (1,0), (1,1) и (0,1). Задайте x как x-координаты вершин и y как y-координаты. patch автоматически соединяет последнее (x, y) координата с первым (x, y) координата.

x = [0 1 1 0];
y = [0 0 1 1];
patch(x,y,'red')

Создайте два полигона путем определения x и y как матрицы 2D столбца. Каждый столбец задает координаты для одного из полигонов. patch добавляет полигоны в текущую систему координат, не очищая оси.

x2 = [2 5; 2 5; 8 8];
y2 = [4 0; 8 2; 4 0];
patch(x2,y2,'green')

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

Создайте красный квадрат с углами в (0,0), (1,0), (1,1) и (0,1). Задайте v так, чтобы каждая строка задала (x, y) координаты для одной вершины. Затем задайте f как вершины, чтобы соединиться. Выберите цвет путем определения свойства FaceColor.

v = [0 0; 1 0; 1 1; 0 1];
f = [1 2 3 4];
patch('Faces',f,'Vertices',v,'FaceColor','red')

Создайте два полигона путем определения f как матрицы 2D строки. Каждая строка задает поверхность для одной закрашенной фигуры.

v2 = [2 4; 2 8; 8 4; 5 0; 5 2; 8 0];
f2 = [1 2 3; 
    4 5 6];
patch('Faces',f2,'Vertices',v2,'FaceColor','green')

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

Создайте полигоны с помощью матриц x и y. Задайте c как вектор-столбец с двумя элементами, поскольку существует две поверхности полигона и добавляют шкалу палитры.

x = [2 5; 2 5; 8 8];
y = [4 0; 8 2; 4 0];
c = [0; 1];
figure
patch(x,y,c)
colorbar

Также можно получить тот же результат при использовании f и v вместо этого. Когда вы создаете полигоны, устанавливаете FaceVertexCData на вектор-столбец с двумя элементами, поскольку существует две поверхности полигона. Установите FaceColor на 'flat'.

v = [2 4; 2 8; 8 4; 5 0; 5 2; 8 0];
f = [1 2 3; 4 5 6];
col = [0; 1];
figure
patch('Faces',f,'Vertices',v,'FaceVertexCData',col,'FaceColor','flat');
colorbar

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

Создайте полигоны с помощью матриц x и y. Задайте c как матрицу тот же размер как x и y, задающий один цвет на вершину, и добавьте шкалу палитры.

x = [2 5; 2 5; 8 8];
y = [4 0; 8 2; 4 0];
c = [0 3; 6 4; 4 6];
figure
patch(x,y,c)
colorbar

Также можно получить тот же результат с помощью f и v вместо этого. Когда вы создаете полигоны, устанавливаете FaceVertexCData на вектор-столбец с одним значением на вершину и устанавливаете FaceColor на 'interp'.

v = [2 4; 2 8; 8 4; 5 0; 5 2; 8 0];
f = [1 2 3; 4 5 6];
col = [0; 6; 4; 3; 4; 6];
figure
patch('Faces',f,'Vertices',v,'FaceVertexCData',col,'FaceColor','interp');
colorbar

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

v = [0 0; 1 0; 1 1];
f = [1 2 3];
figure
patch('Faces',f,'Vertices',v,...
    'EdgeColor','green','FaceColor','none','LineWidth',2);

Используйте различный цвет для каждого ребра путем определения цвета для каждой вершины и установки EdgeColor к 'flat'.

v = [2 0; 3 0; 3 1];
f = [1 2 3];
c = [1 0 0; % red
    0 1 0; % green
    0 0 1]; % blue
patch('Faces',f,'Vertices',v,'FaceVertexCData',c,...
    'EdgeColor','flat','FaceColor','none','LineWidth',2);

Используйте структуру, чтобы создать два полигона. Во-первых, создайте структуру с полевыми именами то свойство исправления соответствия имена. Затем используйте структуру, чтобы создать полигоны.

clear S
S.Vertices = [2 4; 2 8; 8 4; 5 0; 5 2; 8 0];
S.Faces = [1 2 3; 4 5 6];
S.FaceVertexCData = [0; 1];
S.FaceColor = 'flat';
S.EdgeColor = 'red';
S.LineWidth = 2;
figure
patch(S)

Создайте два полупрозрачных полигона путем установки свойства FaceAlpha на значение между 0 и 1.

v1 = [2 4; 2 8; 8 4];
f1 = [1 2 3];
figure
patch('Faces',f1,'Vertices',v1,'FaceColor','red','FaceAlpha',.3);

v2 = [2 4; 2 8; 8 8];
f2 = [1 2 3];
patch('Faces',f2,'Vertices',v2,'FaceColor','blue','FaceAlpha',.5);

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

Создайте данные. Установите последнюю запись y к NaN так, чтобы patch создал строку вместо закрытого полигона. Задайте цвет для каждой вершины с помощью значений y. Значения в c сопоставляют с, раскрашивает палитру.

x = linspace(1,10,15);
y = sin(x);
y(end) = NaN;
c = y;

Создайте строку. Покажите маркеры в каждой вершине и установите EdgeColor на 'interp' интерполировать цвета между вершинами. Добавьте шкалу палитры.

figure
patch(x,y,c,'EdgeColor','interp','Marker','o','MarkerFaceColor','flat');
colorbar;

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

свернуть все

x- для вершин, заданных в одной из следующих форм:

  • Вектор — Создает один полигон.

  • Матрица — Создает полигоны n с вершинами m каждый, где [m,n] = size(X). Каждый столбец в матрице соответствует одному полигону.

Если данные не задают закрытые полигоны, то patch закрывает полигоны. Если ребра отдельного полигона пересекают себя, получившиеся полигоны могут быть частично заполнены. В этом случае лучше разделить объект закрашенной фигуры на меньшие полигоны.

Когда вы задаете X, функция patch устанавливает свойство XData для объекта закрашенной фигуры к тому же значению. Объект закрашенной фигуры автоматически вычисляет поверхность и данные о вершине и устанавливает свойства Faces и Vertices на соответствующие значения.

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

y- для вершин, заданных в одной из следующих форм:

  • Вектор — Создает один полигон.

  • Матрица — Создает полигоны n с вершинами m каждый, где [m,n] = size(Y). Каждый столбец в матрице соответствует одному полигону.

Если данные не задают закрытые полигоны, то patch закрывает полигоны. Если ребра отдельного полигона пересекают себя, получившиеся полигоны могут быть частично заполнены. В этом случае лучше разделить объект закрашенной фигуры на меньшие полигоны.

Когда вы задаете Y, функция patch устанавливает свойство YData для объекта закрашенной фигуры к тому же значению. Объект закрашенной фигуры автоматически вычисляет поверхность и данные о вершине и устанавливает свойства Faces и Vertices на соответствующие значения.

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

z- для вершин, заданных в одной из следующих форм:

  • Вектор — Создает один полигон.

  • Матрица — Создает полигоны m с вершинами n каждый, где [m,n] = size(Z). Каждый столбец в матрице соответствует одному полигону.

Когда вы задаете Z, функция patch устанавливает свойство ZData для объекта закрашенной фигуры к тому же значению. Объект закрашенной фигуры автоматически вычисляет поверхность и данные о вершине и устанавливает свойства Faces и Vertices на соответствующие значения.

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

Цвета полигона, заданные как скаляр, вектор, матрица или название цвета. Формат входа определяет, имеют ли все полигоны тот же цвет, один цвет на поверхность или интерполированные цвета поверхности.

Желаемый эффектИспользуйте один из этих форматовРезультаты
Один цвет для всех поверхностей

  • Название цвета, например, 'r' для красного.

  • Триплет RGB, например, [0 .5 .5].

  • Скалярное значение, например, 2. Свойство CDataMapping определяет как карты ценности в палитру.

Для примера смотрите Координаты Определения.

  • Устанавливает свойство FaceColor на заданный цвет.

Один цвет на поверхность

  • n-by-1 вектор цветов палитры, где n является количеством поверхностей. Свойство CDataMapping определяет, как значения сопоставляют в палитру.

  • n-by-1-by-3 массив значений RGB. Первая страница массива задает красные компоненты цветов, вторая страница задает синий, и третья страница задает зеленый.

Для примера смотрите Различные Цвета Поверхности Полигона.

  • Устанавливает свойство FaceColor на 'flat'.

  • Устанавливает свойства CData и FaceVertexCData с помощью заданных значений цвета.

Интерполированные цвета поверхности

  • m-by-n матрица значений палитры, где [m,n] = size(X). Задайте один цвет на вершину.

  • m-by-n-by-3 массив значений RGB.

Для примера смотрите Интерполированные Цвета Поверхности Полигона.

  • Устанавливает свойство FaceColor на 'interp'.

  • Устанавливает свойства CData и FaceVertexCData с помощью заданных значений цвета.

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

ОпцияОписаниеЭквивалентный триплет RGB
'красный' или 'r'Красный[1 0 0]
'green' или 'g'Зеленый[0 1 0]
'blue' или 'b'Синий[0 0 1]
'yellow' или 'y'Желтый[1 1 0]
'пурпурный' или 'm'Пурпурный[1 0 1]
'голубой' или 'c'Голубой[0 1 1]
'white' или 'w'Белый[1 1 1]
'black' или 'k'Черный[0 0 0]

Вершины полигона, заданные в одной из следующих форм:

  • Матрица 2D столбца — Каждая строка содержит (x, y) координаты для вершины.

  • Матрица с тремя столбцами — Каждая строка содержит (x, y, Z) координаты для вершины.

Задайте только уникальные вершины. Можно обратиться к вершине несколько раз при определении определений поверхности в F.

Когда вы задаете V, функция patch устанавливает свойство Vertices для объекта закрашенной фигуры к тому же значению. Объект закрашенной фигуры автоматически вычисляет координатные данные и устанавливает XData, YData и ZData к соответствующим значениям.

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

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

  • Вектор - строка — Создает один полигон.

  • Матрица — Создает несколько полигонов, где каждая строка соответствует полигону.

Например, этот код задает три вершины в V и создает один полигон путем соединения вершины 1 - 2, 2 - 3, и от 3 до 1.

V = [1 1; 2 1; 2 2];
F = [1 2 3 1];
patch('Faces',F,'Vertices',V)

Когда вы задаете F, функция patch устанавливает свойство Faces для объекта закрашенной фигуры к тому же значению. Объект закрашенной фигуры автоматически вычисляет координатные данные и устанавливает XData, YData и ZData к соответствующим значениям.

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

Исправьте определение, заданное как структура с полями, которые соответствуют имена свойства исправления и значения полей, которые соответствуют значениям свойства исправления.

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

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: patch(x,y,c,'FaceAlpha',.5,'LineStyle',':') создает полупрозрачные полигоны с пунктирными краями.

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

Цвет поверхности, заданный как 'interp', 'flat' триплет RGB, шестнадцатеричный цветовой код, название цвета или краткое название.

Чтобы создать различный цвет для каждой поверхности, задайте свойство CData или FaceVertexCData как массив, содержащий один цвет на поверхность или один цвет на вершину. Цвета могут быть интерполированы от цветов окружающих вершин каждой поверхности, или они могут быть универсальными. Для интерполированных цветов задайте это свойство как 'interp'. Для единых цветов задайте это свойство как 'flat'. Если вы задаете 'flat' и различный цвет для каждой вершины, цвет первой вершины, которую вы задаете, определяет цвет поверхности.

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

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

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

Название цветаКраткое названиеТриплет 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'

Столкнитесь с прозрачностью, заданной как одно из этих значений:

  • Скаляр в области значений [0,1] — универсальная прозрачность Использования через все поверхности. Значение 1 полностью непрозрачно, и 0 абсолютно прозрачен. Эта опция не использует значения прозрачности в свойстве FaceVertexAlphaData.

  • 'flat' — Используйте различную прозрачность для каждой поверхности на основе значений в свойстве FaceVertexAlphaData. Сначала необходимо задать свойство FaceVertexAlphaData как вектор, содержащий одно значение прозрачности на поверхность или вершину. Значение прозрачности в первой вершине определяет прозрачность для целой поверхности.

  • 'interp' — Используйте интерполированную прозрачность для каждой поверхности на основе значений в свойстве FaceVertexAlphaData. Сначала необходимо задать свойство FaceVertexAlphaData как вектор, содержащий одно значение прозрачности на вершину. Прозрачность отличается через каждую поверхность путем интерполяции значений в вершинах.

Цвета обводки, заданные как одно из значений в этой таблице. Цвет обводки по умолчанию является черным со значением [0 0 0]. Если несколько полигонов совместно используют ребро, то первый полигон чертившие средства управления отображенный цвет обводки.

ЗначениеОписаниеРезультат

Триплет RGB, шестнадцатеричный цветовой код или название цвета

Один цвет для всех ребер. Дополнительную информацию см. в следующей таблице.

'flat'

Различный цвет для каждого ребра. Используйте цвета вершины, чтобы выбрать цвет ребра, которое следует за ним. Необходимо сначала задать CData или FaceVertexCData как массив, содержащий один цвет на вершину. Цвет обводки зависит от порядка, в котором вы задаете вершины.

'interp'

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

'none'Никакие ребра не отображены.

Никакие ребра не отображены.

Триплеты 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'

Вот являются триплеты 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'Никакая строкаНикакая строка

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

свернуть все

Объект закрашенной фигуры, возвращенный как скаляр. Каждый объект закрашенной фигуры может состоять из одного или нескольких полигонов. Используйте p, чтобы запросить или изменить свойства объекта закрашенной фигуры после того, как это будет создано.

Расширенные возможности

Представлено до R2006a