exponenta event banner

поверхность

График примитивной поверхности

Описание

пример

surface(X,Y,Z) создает примитивный трехмерный график поверхности. Функция отображает значения в матрице Z как высоты над сеткой в плоскости x-y, определяемой X и Y. Цвет поверхности изменяется в соответствии с высотой, указанной Z.

В отличие от surf функция, примитив surface функция не вызывает newplot перед построением графика и не уважает значение NextPlot для фигуры или осей. Вместо этого график поверхности добавляется к текущим осям без удаления других графических объектов или сброса свойств осей.

пример

surface(X,Y,Z,C) дополнительно задает цвет поверхности.

surface(Z) создает примитивный график поверхности и использует индексы столбцов и строк элементов в Z в качестве координат x и y.

surface(Z,C) дополнительно задает цвет поверхности.

surface(ax,___) строит графики в осях, указанных ax вместо текущих осей. Укажите оси в качестве первого входного аргумента.

пример

surface(___,Name,Value) задает свойства поверхности, используя один или несколько аргументов пары имя-значение. Например, 'FaceAlpha',0.5 создает полупрозрачную поверхность.

пример

s = surface(___) возвращает объект примитивной поверхности диаграммы. Использовать s для изменения поверхности после ее создания. Список свойств см. в разделе Свойства поверхности.

Примеры

свернуть все

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

[X,Y] = meshgrid(1:0.5:10,1:20);
Z = sin(X) + cos(Y);
surface(X,Y,Z)

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

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

view(3)

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

Задайте цвета для графика поверхности, включив четвертый матричный ввод. C. График сетки использует Z для высоты и C для цвета. Укажите цвета с помощью карты цветов, в которой используются одиночные числа для обозначения цветов в спектре. При использовании карты цветов C имеет тот же размер, что и Z. Добавьте цветовую полосу на график, чтобы показать, как значения данных в C соответствуют цветам в карте цветов и устанавливают вид графика как трехмерный вид по умолчанию.

[X,Y] = meshgrid(1:0.5:10,1:20);
Z = sin(X) + cos(Y);
C = X.*Y;
surface(X,Y,Z,C)
colorbar
view(3)

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

Создайте полупрозрачную поверхность, указав FaceAlpha пара имя-значение с 0.5 в качестве значения. Чтобы разрешить дальнейшие изменения, назначьте объект поверхности переменной s.

[X,Y] = meshgrid(-5:.5:5);
Z = Y.*sin(X) - X.*cos(Y);
s = surface(X,Y,Z,'FaceAlpha',0.5);
view(3)

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

Использовать s для доступа и изменения свойств объекта-поверхности после его создания. Например, скрыть кромки, задав EdgeColor собственность.

s.EdgeColor = 'none';

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

Создайте поверхность и отобразите вдоль нее изображение.

Создайте три матрицы одинакового размера.

[pX,pY,pZ] = peaks(25);

Загрузите набор данных, содержащий изображение Земли. Данные изображения отображаются в переменной рабочего пространства X, и связанная карта цветов появляется в map.

load earth
who
Your variables are:

X    map  pX   pY   pZ   

Создайте график поверхности и отобразите изображение вдоль поверхности. Начиная с данных поверхности pZ и цветовые данные X имеют разные размеры, задайте поверхность FaceColor кому 'texturemap'. Задайте для вида графика трехмерный вид по умолчанию.

surface(pX,pY,pZ,X,'FaceColor','texturemap', ...
    'EdgeColor','none','CDataMapping','direct')
colormap(map)
view(3)

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

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

свернуть все

x-координаты, заданная как матрица того же размера, что и Z, или как вектор с длиной n, где [m,n] = size(Z). Если значения для не указаны X и Y, surface использует векторы (1:n) и (1:m).

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

XData имущества Surface объект сохраняет координаты X.

Пример: X = 1:10

Пример: X = [1 2 3; 1 2 3; 1 2 3]

Пример: [X,Y] = meshgrid(-5:0.5:5)

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

y-координаты, заданная как матрица того же размера, что и Z или как вектор с длиной m, где [m,n] = size(Z). Если значения для не указаны X и Y, surface использует векторы (1:n) и (1:m).

Вы можете использовать meshgrid для создания X и Y матрицы.

YData свойство объекта поверхности сохраняет координаты Y.

Пример: Y = 1:10

Пример: Y = [1 1 1; 2 2 2; 3 3 3]

Пример: [X,Y] = meshgrid(-5:0.5:5)

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

z-координаты, заданные как матрица. Z должен иметь не менее двух строк и двух столбцов.

Z определяет высоту графика поверхности в каждой координате x-y. Если цвета не указаны, то Z также задает цвета поверхности.

ZData свойство объекта поверхности сохраняет координаты Z.

Пример: Z = [1 2 3; 4 5 6]

Пример: Z = sin(x) + cos(y)

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

Массив цветов, указанный как mоколо-n матрица индексов карты цветов или в виде mоколо-nоколо-3 массив триплетов RGB, где Z является mоколо-n.

  • Чтобы использовать цвета карты цветов, укажите C в виде матрицы. Для каждой точки сетки на поверхности, C указывает цвет в карте цветов. CDataMapping свойство объекта поверхности управляет тем, как значения в C соответствуют цветам в карте цветов.

  • Чтобы использовать цвета truecolor, укажите C как массив RGB-триплетов.

Дополнительные сведения см. в разделе Различия между картами цветов и Truecolor.

CData свойство объекта поверхности хранит массив цветов. Для дополнительного контроля над окраской поверхности используйте FaceColor и EdgeColor свойства.

Оси для печати в, указанные как axes объект. Если оси не указаны, то surface строит графики в текущих осях.

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

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

Пример: surface(X,Y,Z,'FaceAlpha',0.5,'EdgeColor','none') создает полупрозрачную поверхность без нарисованных кромок.

Примечание

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

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

СтоимостьОписание
'none'Не нарисуйте кромки.
'flat'

Использовать разные цвета для каждого ребра на основе значений в CData собственность. Сначала необходимо указать CData свойство как матрица того же размера, что и ZData. Значение цвета в первой вершине каждой грани (в положительных направлениях x и y) определяет цвет смежных ребер. Вы не можете использовать это значение, когда EdgeAlpha свойство имеет значение 'interp'.

'interp'

Использовать интерполированную раскраску для каждой кромки на основе значений в CData собственность. Сначала необходимо указать CData свойство как матрица того же размера, что и ZData. Цвет изменяется на каждом ребре путем линейной интерполяции значений цвета в вершинах. Вы не можете использовать это значение, когда EdgeAlpha свойство имеет значение 'flat'.

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

Используйте указанный цвет для всех ребер. Этот параметр не использует значения цвета в CData собственность.

Триплеты 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'Без строкиБез строки

Цвет грани, указанный как одно из значений в этой таблице.

СтоимостьОписание
'flat'

Использовать разные цвета для каждой грани на основе значений в CData собственность. Сначала необходимо указать CData свойство как матрица того же размера, что и ZData. Значение цвета в первой вершине каждой грани (в положительных направлениях x и y) определяет цвет для всей грани. Вы не можете использовать это значение, когда FaceAlpha свойство имеет значение 'interp'.

'interp'

Использовать интерполированную раскраску для каждой грани на основе значений в CData собственность. Сначала необходимо указать CData свойство как матрица того же размера, что и ZData. Цвет изменяется для каждой грани путем интерполяции значений цвета в вершинах. Вы не можете использовать это значение, когда FaceAlpha свойство имеет значение 'flat'.

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

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

'texturemap'Преобразование цветовых данных в CData чтобы она соответствовала поверхности.
'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'

Прозрачность грани, заданная как одно из следующих значений:

  • Скаляр в диапазоне [0,1] - использовать равномерную прозрачность для всех граней. Значение 1 является полностью непрозрачным и 0 является полностью прозрачным. Значения между 0 и 1 полупрозрачные. Этот параметр не использует значения прозрачности в AlphaData собственность.

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

  • 'interp' - использовать интерполированную прозрачность для каждой грани на основе значений в AlphaData собственность. Прозрачность изменяется для каждой грани путем интерполяции значений в вершинах. Сначала необходимо указать AlphaData свойство как матрица того же размера, что и ZData собственность. FaceColor свойство также должно иметь значение 'interp'.

  • 'texturemap' - Преобразование данных в AlphaData чтобы она соответствовала поверхности.

Влияние светлых объектов на грани, указанное как одно из следующих значений:

  • 'flat' - Равномерно наносить свет на каждую грань. Это значение используется для просмотра фасетных объектов.

  • 'gouraud' - Изменение света по граням. Рассчитайте свет в вершинах, а затем выполните линейную интерполяцию света по граням. Это значение используется для просмотра криволинейных поверхностей.

  • 'none' - Не применять свет от объектов света к граням.

Для добавления объекта-источника света к осям используйте команду light функция.

Примечание

'phong' значение удалено. Использовать 'gouraud' вместо этого.

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