主要内容

ribbon

条带图

  • Ribbon plot

说明

ribbon(Z)Z 的列绘制为均匀宽度的三维条带图,其中 y 的坐标范围是从 1 到 Z 中的行数。各条带沿 x 轴排列,且居中置于单位间隔处。

示例

ribbon(Y,Z)Y 指定的位置绘制三维条带。

示例

ribbon(Y,Z,width) 指定条带的宽度。

示例

ribbon(___,Name=Value) 使用一个或多个名称-值参量设置条带图的属性。例如,您可以指定条带的颜色和透明度。有关属性列表,请参阅 Surface 属性 (自 R2024b 起)

ribbon(ax,___) 将图形绘制到 ax 指定的坐标区而不是当前坐标区 (gca) 中。选项 ax 可以位于上述语法中的任何输入参量组合之前。

s = ribbon(___) 返回一个由 Surface 对象组成的向量,每个对象对应一个条带。创建绘图后,使用 s 修改该绘图的属性。有关属性列表,请参阅 Surface 属性

示例

示例

全部折叠

创建一个包含五个高度递增的条带的图。首先,创建一个 5×5 矩阵,其中的元素对应于条带高度。

Z = repmat(1:5,4,1)
Z = 4×5

     1     2     3     4     5
     1     2     3     4     5
     1     2     3     4     5
     1     2     3     4     5

Z 的每列表示一个条带,在对应于列号的常量 x 坐标和对应于 Z 的行号的 y 坐标上绘制。

ribbon(Z)

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

使用 magic 函数创建一个 5×5 矩阵。

Z = magic(5)
Z = 5×5

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

创建矩阵的条带图,并指定 y 坐标,使每个条带以 0 为中心。

Y = [-2 -1 0 1 2];
ribbon(Y,Z);

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

在沿 y 轴的不同位置上绘制三个条带。将条带的 y 坐标指定为矩阵 Y,其大小与条带高度矩阵 Z 相同。Y 的每列对应一个条带。

Y = [1 2 3;
     2 3 4;
     3 4 5;
     4 5 6];
Z = Y;
ribbon(Y,Z)

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

创建条带图,并将每个条带的宽度设置为总可用空间的 30%。

Z = magic(5);
Y = [-2 -1 0 1 2];
ribbon(Y,Z,0.3)

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

创建条带图并指定输出参量。输出是一个由五个 Surface 对象组成的向量,其中每个对象对应一个条带。

Z = magic(5);
Y = [-2 -1 0 1 2];
s = ribbon(Y,Z)

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

s = 
  5×1 Surface array:

  Surface
  Surface
  Surface
  Surface
  Surface

通过更改对应 Surface 对象的 EdgeColorLineWidth 属性,突出显示第一个条带。

s(1).EdgeColor = "yellow";
s(1).LineWidth = 3;

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

创建一个包含 30 个条带和一个颜色栏的条带图。

t = linspace(0,2*pi,30);
x = sin(t)';
y = cos(t);
ribbon(x*y)
cbar = colorbar;
cbar.Label.String= "Ribbon Number";

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

使用 colormap 函数更改条带颜色。ribbon 将条带的 x 坐标线性映射到颜色图中的颜色。

colormap(turbo)

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

输入参数

全部折叠

表示条带高度的 z 坐标,指定为数值向量或数值矩阵。

  • 如果 Z 是向量,则无论 Z 是行向量还是列向量,ribbon 都会创建单个条带。

  • 如果 Z 是矩阵,ribbon 将为每列创建一个条带。各条带沿 x 轴排列,且居中置于单位间隔处,其中 x 坐标的范围是从 1 到 Z 中的列数。

y 坐标,指定为数值向量或数值矩阵。Z 的大小确定 Y 的可能大小:

  • 如果 Z 是向量,Y 必须为与 Z 大小相同的向量。ribbon 使用 YZ 中的数据在 X = 1 处绘制单个条带。

  • 如果 Z 是矩阵,Y 可以是长度等于 Z 中行数的行向量或列向量,或是与 Z 大小相同的矩阵。ribbon 使用 YZ 中的数据为 Z 中的每一列绘制一个条带。如果 Y 是向量,则每个条带都有相同的 y 坐标。

条带宽度,指定为表示每个条带可用总空间的百分比的数值标量。

  • 如果 width < 1,条带宽度将占据分配空间的一部分。

  • 如果 width = 1,则各条带相互接触,沿 z 轴向下查看时它们紧挨在一起。

  • 如果 width > 1,则条带相互重叠并可能相交。

例如,默认值 0.75 表示条带宽度是条带可用总空间的 75%,每侧有 12.5% 的空白空间。

目标坐标区,指定为 Axes 对象。如果未指定坐标区,则 MATLAB® 将在当前坐标区中进行绘制;或如果不存在 Axes 对象,则创建一个对象。

名称-值参数

全部折叠

Name1=Value1,...,NameN=ValueN 的形式指定可选参量对组,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。

示例: ribbon([1 2 3; 1 2 3],FaceColor="red") 创建一个红色条带图。

注意

此处所列的属性只是一部分。有关完整列表,请参阅 Surface 属性

面颜色,指定为下表中的值之一。

描述
'flat'

根据 CData 属性中的值,对每个面使用不同的颜色。首先您必须将 CData 属性指定为矩阵,大小与 ZData 相同。每个面的第一个顶点(正 xy 方向)的颜色值决定整个面的颜色。当 FaceAlpha 属性设置为 'interp' 时,不能使用此值。

Sample of a surface with each face a different color based on sample values in the CData property

'interp'

根据 CData 属性中的值,对每个面使用插补着色。首先您必须将 CData 属性指定为矩阵,大小与 ZData 相同。通过基于各顶点处颜色值进行插值,每个面上的颜色会渐变。当 FaceAlpha 属性设置为 'flat' 时,不能使用此值。

Sample of a surface with each face showing different interpolated coloring based on sample values in the CData property

RGB 三元组、十六进制颜色代码或颜色名称

对所有面使用指定的颜色。此选项不会使用 CData 属性中的颜色值。

Sample of a surface with all faces shown in red

'texturemap'变换 CData 中的颜色数据,以便其符合曲面。
'none'不绘制面。

RGB 三元组和十六进制颜色代码对于指定自定义颜色非常有用。

  • RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度值必须位于 [0,1] 范围内,例如 [0.4 0.6 0.7]

  • 十六进制颜色代码是字符向量或字符串标量,以井号 (#) 开头,后跟三个或六个十六进制数字,范围可以是 0F。这些值不区分大小写。因此,颜色代码 "#FF8800""#ff8800""#F80""#f80" 是等效的。

此外,还可以按名称指定一些常见的颜色。下表列出了命名颜色选项、等效 RGB 三元组和十六进制颜色代码。

颜色名称短名称RGB 三元组十六进制颜色代码外观
"red""r"[1 0 0]"#FF0000"

Sample of the color red

"green""g"[0 1 0]"#00FF00"

Sample of the color green

"blue""b"[0 0 1]"#0000FF"

Sample of the color blue

"cyan" "c"[0 1 1]"#00FFFF"

Sample of the color cyan

"magenta""m"[1 0 1]"#FF00FF"

Sample of the color magenta

"yellow""y"[1 1 0]"#FFFF00"

Sample of the color yellow

"black""k"[0 0 0]"#000000"

Sample of the color black

"white""w"[1 1 1]"#FFFFFF"

Sample of the color white

下表列出了浅色和深色主题中绘图的默认调色板。

调色板调色板颜色

"gem" - 浅色主题默认值

在 R2025a 之前的版本中: 大多数绘图默认使用这些颜色。

Sample of the "gem" color palette

"glow" - 深色主题默认值

Sample of the "glow" color palette

您可以使用 orderedcolorsrgb2hex 函数获取这些调色板的 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 时完全透明。介于 01 之间的值表示半透明。此选项不会使用 AlphaData 属性中的透明度值。

  • 'flat' - 根据 AlphaData 属性中的值,对每个面使用不同的透明度。第一个顶点的透明度值确定整个面的透明度。首先您必须将 AlphaData 属性指定为矩阵,大小与 ZData 属性相同。FaceColor 属性也必须设置为 'flat'

  • 'interp' - 根据 AlphaData 属性中的值,对每个面使用插值透明度。通过基于各顶点处透明度数值进行插值,每个面上的透明度会渐变。首先您必须将 AlphaData 属性指定为矩阵,大小与 ZData 属性相同。FaceColor 属性也必须设置为 'interp'

  • 'texturemap' - 变换 AlphaData 中的数据,以便其符合曲面。

边线颜色,指定为下面列出的值之一。默认颜色 [0 0 0] 对应于黑边。

描述
'none'不绘制边。
'flat'

根据 CData 属性中的值,对每个边使用不同的颜色。首先您必须将 CData 属性指定为矩阵,大小与 ZData 相同。每个面(正的 xy 方向)的第一个顶点处的颜色值确定相邻边的颜色。当 EdgeAlpha 属性设置为 'interp' 时,不能使用此值。

Sample of a surface with each edge a different color based on sample values in the CData property

'interp'

根据 CData 属性中的值,对每个边使用插补着色。首先您必须将 CData 属性指定为矩阵,大小与 ZData 相同。通过基于各顶点处颜色值进行线性插值,每条边上的颜色会渐变。当 EdgeAlpha 属性设置为 'flat' 时,不能使用此值。

Sample of a surface with each edge showing different interpolated coloring based on sample values in the CData property

RGB 三元组、十六进制颜色代码或颜色名称

对所有边使用指定的颜色。此选项不会使用 CData 属性中的颜色值。

Sample of a surface with all edges shown in red

RGB 三元组和十六进制颜色代码对于指定自定义颜色非常有用。

  • RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度值必须位于 [0,1] 范围内,例如 [0.4 0.6 0.7]

  • 十六进制颜色代码是字符向量或字符串标量,以井号 (#) 开头,后跟三个或六个十六进制数字,范围可以是 0F。这些值不区分大小写。因此,颜色代码 "#FF8800""#ff8800""#F80""#f80" 是等效的。

此外,还可以按名称指定一些常见的颜色。下表列出了命名颜色选项、等效 RGB 三元组和十六进制颜色代码。

颜色名称短名称RGB 三元组十六进制颜色代码外观
"red""r"[1 0 0]"#FF0000"

Sample of the color red

"green""g"[0 1 0]"#00FF00"

Sample of the color green

"blue""b"[0 0 1]"#0000FF"

Sample of the color blue

"cyan" "c"[0 1 1]"#00FFFF"

Sample of the color cyan

"magenta""m"[1 0 1]"#FF00FF"

Sample of the color magenta

"yellow""y"[1 1 0]"#FFFF00"

Sample of the color yellow

"black""k"[0 0 0]"#000000"

Sample of the color black

"white""w"[1 1 1]"#FFFFFF"

Sample of the color white

下表列出了浅色和深色主题中绘图的默认调色板。

调色板调色板颜色

"gem" - 浅色主题默认值

在 R2025a 之前的版本中: 大多数绘图默认使用这些颜色。

Sample of the "gem" color palette

"glow" - 深色主题默认值

Sample of the "glow" color palette

您可以使用 orderedcolorsrgb2hex 函数获取这些调色板的 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 时完全透明。介于 01 之间的值表示半透明。此选项不会使用 AlphaData 属性中的透明度值。

  • 'flat' - 根据 AlphaData 属性中的值,对每个边使用不同透明度。首先您必须将 AlphaData 属性指定为矩阵,大小与 ZData 属性相同。第一个顶点上的透明度值确定整条边的透明度。EdgeColor 属性也必须设置为 'flat'

  • 'interp' - 根据 AlphaData 属性中的值,对每个边使用插值透明度。首先您必须将 AlphaData 属性指定为矩阵,大小与 ZData 属性相同。通过基于各顶点处值进行插值,每条边上的透明度会渐变。EdgeColor 属性也必须设置为 'interp'

扩展功能

全部展开

版本历史记录

在 R2006a 之前推出

全部展开