exponenta event banner

участок

Печать одной или нескольких заполненных полигональных областей

Описание

пример

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 как вектор значений длительности. 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-координаты вершин, указанные в одной из следующих форм:

  • Вектор (Vector) - создание одного многоугольника.

  • Матрица - Создать 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 для вершин, указанные в одной из следующих форм:

  • Вектор (Vector) - создание одного многоугольника.

  • Матрица - Создать 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-координаты вершин, указанные в одной из следующих форм:

  • Вектор (Vector) - создание одного многоугольника.

  • Матрица - Создать 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. CDataMapping определяет способ отображения значения в карте цветов.

Пример см. в разделе Указание координат.

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

Один цвет на грань

  • n-по-1 вектор цветов карты цветов, где n - количество граней. CDataMapping определяет способ сопоставления значений с картой цветов.

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

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

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

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

Интерполированные цвета граней

  • mоколо-n матрица значений карты цветов, где [m,n] = size(X). Укажите один цвет для каждой вершины.

  • mоколо-nоколо-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

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

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

  • Матрица (Matrix) - создание нескольких многоугольников, где каждая строка соответствует многоугольнику.

Например, этот код определяет три вершины в 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

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

Объект Axes. Если объект axes не указан, то 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'Без строкиБез строки

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

свернуть все

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

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

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