surf

Объемная поверхностная диаграмма

Описание

пример

surf(X,Y,Z) создает трехмерную объемную поверхностную диаграмму, представляющий собой трехмерную поверхность, которая имеет сплошные цвета ребер и сплошные цвета граней. А графики функций значения в матрице Z как высоты над сеткой в плоскости x - y заданные X и Y. Цвет поверхности изменяется в зависимости от высот, заданных Z.

пример

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

surf(Z) создает объемную поверхностную диаграмму и использует индексы столбцов и строк элементов в Z как x - и y - координаты.

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

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

пример

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

пример

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

Примеры

свернуть все

Создайте три матрицы одинакового размера. Затем постройте график как поверхность. В объемную поверхностную диаграмму используются Z для высоты и цвета.

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

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;
surf(X,Y,Z,C)
colorbar

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

Задайте цвета для объемной поверхностной диаграммы, включив четвертый матричный вход, CO. В объемную поверхностную диаграмму используются Z для высоты и CO для цвета. Укажите цвета с помощью truecolor, который использует триплеты чисел, чтобы стоять для всех возможных цветов. Когда вы используете truecolor, если Z является m-by- n, затем CO является m-by- n-by-3. Первая страница массива обозначает красный компонент для каждого цвета, вторая страница обозначает зеленый компонент, а третья страница обозначает синий компонент.

[X,Y,Z] = peaks(25);
CO(:,:,1) = zeros(25); % red
CO(:,:,2) = ones(25).*linspace(0.5,0.6,25); % green
CO(:,:,3) = ones(25).*linspace(0,1,25); % blue
surf(X,Y,Z,CO)

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 = surf(X,Y,Z,'FaceAlpha',0.5)

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

s = 
  Surface with properties:

       EdgeColor: [0 0 0]
       LineStyle: '-'
       FaceColor: 'flat'
    FaceLighting: 'flat'
       FaceAlpha: 0.5000
           XData: [21x21 double]
           YData: [21x21 double]
           ZData: [21x21 double]
           CData: [21x21 double]

  Show all properties

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

s.EdgeColor = 'none';

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

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

свернуть все

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

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

The XData свойство Surface объект сохраняет x -cordinates.

Пример: 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 | categorical | datetime | duration

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

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

The YData свойство объекта surface сохраняет y -cordinates.

Пример: 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 | categorical | datetime | duration

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

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

The ZData свойство объекта surface сохраняет z -cordinates.

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

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

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

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

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

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

Для получения дополнительной информации смотрите Различия между Палитрами и Труеколором.

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

Графическое изображение осей, заданное как axes объект. Если вы не задаете оси, то surf графики в текущей системе координат.

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

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

Пример: surf(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 свойство. The FaceColor свойство также должно быть установлено в 'flat'.

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

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

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

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

  • 'gouraud' - Варьируйте свет по граням. Вычислите свет в вершинах и затем линейно интерполируйте свет через грани. Используйте это значение для просмотра изогнутых поверхностей.

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

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

Примечание

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

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

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