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), за исключением того, что вы не должны задавать цветовые данные для координат 2-D.

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

Примечание

Когда вы задаете данные используя 'XData', 'YData', или 'ZData' аргументы имя-значение, данные должны иметь числовой тип, например double, single, или целого типа. Чтобы задать categorical, datetime, или duration данные, используйте x, y, и z аргументы.

пример

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')

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

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

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

Figure contains an axes. The axes contains 2 objects of type patch.

Определите X как вектор категориальных значений и задайте Y как вектор значений длительности. The patch функция использует отсортированный список категорий, поэтому ось X может отображать их в другом порядке, чем вы ожидаете. Чтобы задать порядок, вызовите reordercats функция. Затем создайте красную закрашенную фигуру, чтобы визуализировать данные.

X = categorical({'Freezing','Cold','Warm','Hot','Boiling','Boiling','Freezing'});
X = reordercats(X,{'Freezing','Cold','Warm','Hot','Boiling'});
Y = minutes([0 15 20 47 50 0 0]);
patch(X,Y,'red')

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

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

Создайте красный квадрат с углами в (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')

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

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

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')

Figure contains an axes. The axes contains 2 objects of type patch.

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

Создайте многоугольники с помощью матриц 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

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

Также можно получить тот же результат при использовании 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

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

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

Создайте многоугольники с помощью матриц 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

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

Также можно получить тот же результат с помощью 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

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

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

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

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

Используйте другой цвет для каждого ребра путем определения цвета для каждой вершины и настройки 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);

Figure contains an axes. The axes contains 2 objects of type patch.

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

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)

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

Создайте два полупрозрачных многоугольников путем установки 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);

Figure contains an axes. The axes contains 2 objects of type patch.

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

Создайте данные. Установите последнюю запись 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;

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

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

свернуть все

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

  • Вектор - Создать один многоугольник.

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

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

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

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

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

  • Вектор - Создать один многоугольник.

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

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

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

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

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

  • Вектор - Создать один многоугольник.

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

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

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

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

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

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

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

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

Для получения примера см. раздел «Определение координат».

  • Устанавливает FaceColor свойство к указанному цвету.

Один цвет на лицо

  • n-by-1 вектор цветов палитры, где n количество граней. The 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
'red' или 'r'Красный[1 0 0]
'green' или 'g'Зеленый[0 1 0]
'blue' или 'b'Синий[0 0 1]
'yellow' или 'y'Желтый[1 1 0]
'magenta' или 'm'Пурпурный[1 0 1]
'cyan' или 'c'Голубой[0 1 1]
'white' или 'w'Белый[1 1 1]
'black' или 'k'Черный[0 0 0]

Многоугольники, заданные в одной из следующих форм:

  • Двухколоночная матрица - каждая строка содержит (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 - имя аргумента и 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