surfc
曲面图下的等高线图

说明
surfc(
将图形绘制到 ax
,___)ax
指定的坐标区中,而不是当前坐标区中。指定坐标区作为第一个输入参量。
surfc(___,
使用一个或多个名称-值对组参量指定曲面属性。例如,Name,Value
)'FaceAlpha',0.5
创建半透明曲面。
sc = surfc(___)
返回包含图曲面对象和等高线对象的图形数组。使用 sc
修改所创建的曲面图和等高线图。有关属性列表,请参阅 Surface 属性 和 Contour 属性。
示例
创建三个相同大小的矩阵。然后将它们绘制为曲面,并在曲面图下显示等高线图。曲面的高度和颜色均使用 Z
确定。
[X,Y] = meshgrid(1:0.5:10,1:20); Z = sin(X) + cos(Y); surfc(X,Y,Z)
通过采用第四个矩阵输入 C
来指定曲面和等高线图的颜色。曲面图使用 Z
表示高度,C
表示颜色。使用颜色图指定颜色,该颜色图使用单个数字表示色谱上的颜色。使用颜色图时,C
与 Z
大小相同。向图中添加颜色栏以显示 C
中的数据值如何对应于颜色图中的颜色。
[X,Y] = meshgrid(-3:.125:3); Z = peaks(X,Y); C = X.*Y; surfc(X,Y,Z,C) colorbar
通过将 FaceColor
名称-值对组的值指定为 'b'
,创建一个蓝色曲面图,其下方有等高线图。要允许进一步修改,请将包含曲面和等高线对象的图形数组赋给变量 sc
。
[X,Y] = meshgrid(-5:.5:5); Z = Y.*sin(X) - X.*cos(Y); sc = surfc(X,Y,Z,'FaceColor','b');
对 sc
进行索引,以访问和修改所创建的曲面和等高线图的属性。可通过 sc(1)
访问曲面图,通过 sc(2)
访问等高线图。例如,通过设置 EdgeColor
属性来更改两个绘图的边颜色。
sc(1).EdgeColor = 'r'; sc(2).EdgeColor = 'b';
默认情况下,等高线显示在最小 z 层级,但您可以通过设置 ZLocation
属性来更改其位置。
将 peaks
数据集显示为曲面图,等高线位于最小 z 层级。当您调用 surfc
函数时,请指定返回参量,以便您 Contour
对象。
Z = peaks; sc = surfc(Z);
获取当前坐标区,并将 z 轴的上限扩展到 15
。然后将等高线移至最大 z 层级。
ax = gca;
ax.ZLim(2) = 15;
sc(2).ZLocation = 'zmax';
输入参数
x 坐标,指定为大小与 Z
相同的矩阵或长度为 n
的向量,其中 [m,n] = size(Z)
。如果未指定 X
和 Y
的值,surfc
将使用向量 (1:n)
和 (1:m)
。
当 X
是矩阵时,这些值必须在一个维度上严格递增或递减,而在另一个维度上保持不变。这个变化的维度必须与在 Y
中变化的维度相反。您可以使用 meshgrid
函数创建 X
和 Y
矩阵。
当 X
是向量时,值必须严格递增或递减。
曲面和等高线对象的 XData
属性存储 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
| categorical
y 坐标,指定为大小与 Z
相同的矩阵或长度为 m
的向量,其中 [m,n] = size(Z)
。如果未指定 X
和 Y
的值,surfc
将使用向量 (1:n)
和 (1:m)
。
当 Y
是矩阵时,这些值必须在一个维度上严格递增或递减,而在另一个维度上保持不变。这个变化的维度必须与在 X
中变化的维度相反。您可以使用 meshgrid
函数创建 X
和 Y
矩阵。
当 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
| categorical
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
| categorical
颜色数组,指定为由颜色图索引组成的 m
×n
矩阵或 RGB 三元组的 m
×n
×3
数组,其中 Z
为 m
×n
。
要使用颜色图颜色,请将
C
指定为矩阵。对于曲面上的每个网格点,C
指示颜色图中的一种颜色。曲面对象的CDataMapping
属性控制C
中的值如何对应颜色图中的颜色。要使用真彩色,请将
C
指定为 RGB 三元组数组。
有关详细信息,请参阅颜色图和真彩色之间的差异。
曲面对象的 CData
属性存储颜色数组。如果要对曲面着色进行更多控制,请使用 FaceColor
和 EdgeColor
属性。
要在其中绘图的坐标区,指定为 axes
对象。如果未指定坐标区,则 surfc
在当前坐标区中绘图。
名称-值参数
以 Name1=Value1,...,NameN=ValueN
的形式指定可选参量对组,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: surfc(X,Y,Z,'FaceAlpha',0.5,'EdgeColor','none')
创建一个半透明曲面,并且不绘制边缘。
注意
此处所列的属性只是一部分。有关完整列表,请参阅 Surface 属性。
边线颜色,指定为下面列出的值之一。默认颜色 [0 0 0]
对应于黑边。
值 | 描述 |
---|---|
'none' | 不绘制边。 |
'flat' | 根据 |
'interp' | 根据
|
RGB 三元组、十六进制颜色代码或颜色名称 | 对所有边使用指定的颜色。此选项不会使用
|
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" |
下表列出了浅色和深色主题中绘图的默认调色板。
调色板 | 调色板颜色 |
---|---|
在 R2025a 之前的版本中: 大多数绘图默认使用这些颜色。 |
|
|
|
您可以使用 orderedcolors
和 rgb2hex
函数获取这些调色板的 RGB 三元组和十六进制颜色代码。例如,获取 "gem"
调色板的 RGB 三元组并将其转换为十六进制颜色代码。
RGB = orderedcolors("gem");
H = rgb2hex(RGB);
在 R2023b 之前的版本中: 使用 RGB = get(groot,"FactoryAxesColorOrder")
获取 RGB 三元组。
在 R2024a 之前的版本中: 使用 H = compose("#%02X%02X%02X",round(RGB*255))
获取十六进制颜色代码。
线型,指定为下表中列出的选项之一。
线型 | 描述 | 表示的线条 |
---|---|---|
"-" | 实线 |
|
"--" | 虚线 |
|
":" | 点线 |
|
"-." | 点划线 |
|
"none" | 无线条 | 无线条 |
面颜色,指定为下表中的值之一。
值 | 描述 |
---|---|
'flat' | 根据 |
'interp' | 根据
|
RGB 三元组、十六进制颜色代码或颜色名称 | 对所有面使用指定的颜色。此选项不会使用
|
'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" |
下表列出了浅色和深色主题中绘图的默认调色板。
调色板 | 调色板颜色 |
---|---|
在 R2025a 之前的版本中: 大多数绘图默认使用这些颜色。 |
|
|
|
您可以使用 orderedcolors
和 rgb2hex
函数获取这些调色板的 RGB 三元组和十六进制颜色代码。例如,获取 "gem"
调色板的 RGB 三元组并将其转换为十六进制颜色代码。
RGB = orderedcolors("gem");
H = rgb2hex(RGB);
在 R2023b 之前的版本中: 使用 RGB = get(groot,"FactoryAxesColorOrder")
获取 RGB 三元组。
在 R2024a 之前的版本中: 使用 H = compose("#%02X%02X%02X",round(RGB*255))
获取十六进制颜色代码。
面透明度,指定为下列值之一:
范围
[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'
。
扩展功能
surfc
函数支持 GPU 数组输入,但有以下用法说明和限制:
此函数接受 GPU 数组,但不在 GPU 上运行。
有关详细信息,请参阅在 GPU 上运行 MATLAB 函数 (Parallel Computing Toolbox)。
版本历史记录
在 R2006a 之前推出
另请参阅
函数
属性
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)