surface
基本曲面图
语法
说明
surface(
将图形绘制到 ax
,___)ax
指定的坐标区中,而不是当前坐标区中。指定坐标区作为第一个输入参量。
surface(___,
使用一个或多个名称-值对组参量指定曲面属性。例如,Name,Value
)'FaceAlpha',0.5
创建半透明曲面。
s = surface(___)
返回图基本曲面对象。在创建曲面之后可使用 s
对其进行修改。有关属性列表,请参阅 Surface 属性。
示例
创建曲面图
创建三个相同大小的矩阵。然后将它们绘制为一个曲面。曲面的高度和颜色均使用 Z
确定。
[X,Y] = meshgrid(1:0.5:10,1:20); Z = sin(X) + cos(Y); surface(X,Y,Z)
默认情况下,在二维视图坐标区中显示曲面。将坐标区更改为三维视图。
view(3)
指定曲面图的颜色图颜色
通过包含第四个矩阵输入 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)
修改曲面图的外观
通过指定以 0.5
为值的 FaceAlpha
名称-值对组,来创建半透明曲面。要允许进一步修改,请将曲面对象赋给变量 s
。
[X,Y] = meshgrid(-5:.5:5);
Z = Y.*sin(X) - X.*cos(Y);
s = surface(X,Y,Z,'FaceAlpha',0.5);
view(3)
在创建曲面对象之后可使用 s
访问并修改其属性。例如,通过设置 EdgeColor
属性来隐藏边。
s.EdgeColor = 'none';
沿曲面图显示图像
创建曲面并沿其显示图像。
创建三个相同大小的矩阵。
[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)
输入参数
X
— x 坐标
矩阵 | 向量
x 坐标,指定为大小与 Z
相同的矩阵或长度为 n
的向量,其中 [m,n] = size(Z)
。如果未指定 X
和 Y
的值,surface
将使用向量 (1:n)
和 (1:m)
。
您可以使用 meshgrid
函数创建 X
和 Y
矩阵。
Surface
对象的 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
| datetime
| duration
Y
— y 坐标
矩阵 | 向量
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
| categorical
| datetime
| duration
Z
— z 坐标
矩阵
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
| datetime
| duration
C
— 颜色数组
矩阵 | RGB 三元组的 m
×n
×3
数组
颜色数组,指定为由颜色图索引组成的 m
×n
矩阵或 RGB 三元组的 m
×n
×3
数组,其中 Z
为 m
×n
。
要使用颜色图颜色,请将
C
指定为矩阵。对于曲面上的每个网格点,C
指示颜色图中的一种颜色。曲面对象的CDataMapping
属性控制C
中的值如何对应颜色图中的颜色。要使用真彩色,请将
C
指定为 RGB 三元组数组。
有关详细信息,请参阅颜色图和真彩色之间的差异。
曲面对象的 CData
属性存储颜色数组。如果要对曲面着色进行更多控制,请使用 FaceColor
和 EdgeColor
属性。
ax
— 绘图所用的坐标区
坐标区对象
要在其中绘图的坐标区,指定为 axes
对象。如果未指定坐标区,则 surface
在当前坐标区中绘图。
名称-值参数
将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: surface(X,Y,Z,'FaceAlpha',0.5,'EdgeColor','none')
创建一个半透明曲面,并且不绘制边缘。
注意
此处所列的属性只是一部分。有关完整列表,请参阅 Surface 属性。
EdgeColor
— 边缘线条颜色
[0 0 0]
(默认) | 'none'
| 'flat'
| 'interp'
| RGB 三元组 | 十六进制颜色代码 | 'r'
| 'g'
| 'b'
| ...
边线颜色,指定为下面列出的值之一。默认颜色 [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" |
以下是 MATLAB® 在许多类型的绘图中使用的默认颜色的 RGB 三元组和十六进制颜色代码。
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" |
LineStyle
— 线型
"-"
(默认) | "--"
| ":"
| "-."
| "none"
线型,指定为下表中列出的选项之一。
线型 | 描述 | 表示的线条 |
---|---|---|
"-" | 实线 |
|
"--" | 虚线 |
|
":" | 点线 |
|
"-." | 点划线 |
|
"none" | 无线条 | 无线条 |
FaceColor
— 面颜色
'flat'
(默认) | 'interp'
| 'none'
| 'texturemap'
| RGB 三元组 | 十六进制颜色代码 | 'r'
| 'g'
| 'b'
| ...
面颜色,指定为下表中的值之一。
值 | 描述 |
---|---|
'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" |
以下是 MATLAB 在许多类型的绘图中使用的默认颜色的 RGB 三元组和十六进制颜色代码。
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" |
FaceAlpha
— 面透明度
1 (默认) | 范围 [0,1]
中的标量 | 'flat'
| 'interp'
| 'texturemap'
面透明度,指定为下列值之一:
范围
[0,1]
中的标量 - 在所有面上使用统一的透明度。值为1
时完全不透明,值为0
时完全透明。介于0
和1
之间的值表示半透明。此选项不会使用AlphaData
属性中的透明度值。'flat'
- 根据AlphaData
属性中的值,对每个面使用不同的透明度。第一个顶点的透明度值确定整个面的透明度。首先您必须将AlphaData
属性指定为矩阵,大小与ZData
属性相同。FaceColor
属性也必须设置为'flat'
。'interp'
- 根据AlphaData
属性中的值,对每个面使用插值透明度。通过基于各顶点处透明度数值进行插值,每个面上的透明度会渐变。首先您必须将AlphaData
属性指定为矩阵,大小与ZData
属性相同。FaceColor
属性也必须设置为'interp'
。'texturemap'
- 变换AlphaData
中的数据,以便其符合曲面。
FaceLighting
— 光源对象对面的影响
'flat'
(默认) | 'gouraud'
| 'none'
光源对象对面的影响,指定为下列值之一:
'flat'
- 将光源均匀地应用于每个面上。使用此值可查看分面着色对象。'gouraud'
- 改变各个面的光源。计算顶点处的光照,然后以在各个面中进行光照插值。使用此值可查看曲面。'none'
- 不将来自光源对象的光源应用于各个面。
要向坐标区中添加光对象,请使用 light
函数。
注意
'phong'
值已被删除。请改用 'gouraud'
。
版本历史记录
在 R2006a 之前推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)