主要内容

waterfall

瀑布图

  • Waterfall plot

说明

waterfall(X,Y,Z) 创建瀑布图,这是一种沿 y 维度有部分帷幕的网格图。这会产生一种“瀑布”效果。该函数将矩阵 Z 中的值绘制为由 XY 定义的 x-y 平面中的网格上方的高度。边颜色因 Z 指定的高度而异。

示例

waterfall(X,Y,Z,C) 进一步指定边的颜色。

示例

waterfall(Z) 创建一个瀑布图,并将 Z 中元素的列索引和行索引用作 x 坐标和 y 坐标。

waterfall(Z,C) 进一步指定边的颜色。

waterfall(___,Name=Value) 使用一个或多个名称-值参量设置瀑布图的属性。例如,您可以指定图边的颜色和粗细。有关属性列表,请参阅 Patch 属性 (自 R2024b 起)

waterfall(ax,___) 将图形绘制到 ax 指定的坐标区中,而不是当前坐标区中。指定坐标区作为第一个输入参量。此参量可用于上述任一输入语法。

p = waterfall(___) 返回补片对象。在创建瀑布图后,使用 p 对其进行修改。有关属性列表,请参阅 Patch 属性

示例

示例

全部折叠

创建三个相同大小的矩阵。然后将它们绘制为一个瀑布图。网格图使用 Z 确定高度和颜色。

[X,Y] = meshgrid(-3:.125:3);
Z = peaks(X,Y);
waterfall(X,Y,Z)

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

通过包含第四个矩阵输入 C 来指定瀑布图的颜色。瀑布图使用 Z 表示高度,C 表示颜色。向图中添加颜色栏以显示 C 中的数据值如何对应于颜色图中的颜色。

[X,Y] = meshgrid(-3:.125:3);
Z = peaks(X,Y);
C = gradient(Z);
waterfall(X,Y,Z,C)
colorbar

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

创建一个瀑布图。要允许进一步修改,请将补片对象赋给变量 p

[X,Y] = meshgrid(-5:.5:5);
Z = Y.*sin(X) - X.*cos(Y);
p = waterfall(X,Y,Z)

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

p = 
  Patch with properties:

    FaceColor: [1 1 1]
    FaceAlpha: 1
    EdgeColor: 'flat'
    LineStyle: '-'
        Faces: [21×26 double]
     Vertices: [546×3 double]

  Show all properties

在创建瀑布图之后可使用 p 访问并修改其属性。例如,通过设置 EdgeColor 属性来更改图边的颜色。

p.EdgeColor = 'b';

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

通过转置输入参量,沿 x 维度(而不是 y 维度)显示部分帷幕。

[X,Y] = meshgrid(-3:.125:3);
Z = peaks(X,Y);
waterfall(X',Y',Z')

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

输入参数

全部折叠

x 坐标,指定为大小与 Z 相同的矩阵或长度为 n 的向量(当 Zm×n 矩阵时)。如果未指定 XY 的值,waterfall 将使用向量 (1:n)(1:m)

补片对象的 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 的向量(当 Zm×n 矩阵时)。如果未指定 XY 的值,waterfall 将使用向量 (1:n)(1:m)

补片对象的 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 指定在每个 xy 坐标处的瀑布图的高度。如果不指定颜色,则 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 矩阵,其中 Zm×n 的大小。对于瀑布图上的每个网格点,C 指示颜色图中的一种颜色。补片对象的 CDataMapping 属性控制 C 中的值如何对应颜色图中的颜色。

补片对象的 CData 属性存储颜色数组。如果要对图着色进行更多控制,请使用 FaceColorEdgeColor 属性。

目标坐标区,指定为 Axes 对象。如果未指定坐标区,则 waterfall 在当前坐标区中绘图。

名称-值参数

全部折叠

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

示例: waterfall(peaks,LineStyle="--") 使用虚线创建一个瀑布图。

注意

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

边颜色,指定为下表中的值之一。默认边颜色为黑色,值为 [0 0 0]。如果多个多边形共用一条边,则最先绘制的多边形将控制显示的边颜色。

描述结果

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

所有边使用一种颜色。如需更多详细信息,请参阅下表。

Rectangular patch with red edges

'flat'

每条边使用不同颜色。使用顶点颜色设置该顶点之后的边的颜色。您必须先将 CDataFaceVertexCData 指定为一个数组,其中一个顶点对应一种颜色。边颜色取决于您指定顶点的顺序。

Rectangular patch with a medium green upper-right vertex, a medium green top edge, a yellow upper-left vertex, a yellow left edge, a dark blue lower-left vertex, a dark blue lower edge, a light blue lower-right vertex, and a light blue right edge

'interp'

插入的边颜色。您必须先将 CDataFaceVertexCData 指定为一个数组,其中一个顶点对应一种颜色。通过在两个边界顶点上进行线性插值来确定边颜色。

Rectangular patch with interpolated edge colors. The top two vertices are medium green and yellow, respectively. The bottom two vertices are dark blue and light blue, respectively. The color of each edge is a gradient of the colors at the bounding vertices.

'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)) 获取十六进制颜色代码。

线型,指定为下表中列出的选项之一。

线型描述表示的线条
"-"实线

Sample of solid line

"--"虚线

Sample of dashed line

":"点线

Sample of dotted line

"-."点划线

Sample of dash-dotted line, with alternating dashes and dots

"none"无线条无线条

线宽,指定为以磅为单位的正值,其中 1 磅 = 1/72 英寸。如果该线条具有标记,则线条宽度也会影响标记边。

线宽不能小于像素的宽度。如果将线宽设置为小于系统上像素宽度的值,则线条显示为一个像素的宽度。

提示

  • 要以列(而不是行)形式分析数据,请调用带转置参量的 waterfall

    [X,Y] = meshgrid(-3:.125:3);
    Z = peaks(X,Y);
    waterfall(X',Y',Z')

  • 要创建网格曲面对象而不是补片对象,请使用 meshz 函数。要创建类似瀑布图的图,请将曲面的 MeshStyle 属性设置为 'Row'

算法

  • 坐标区的 XLimYLimZLim 属性存储 xyz 轴的范围。这些范围基于 XYZ 输入参量的范围。

  • 坐标区的 CLim 属性确定颜色在 C 范围内的分布。有关详细信息,请参阅控制颜色图范围

扩展功能

全部展开

版本历史记录

在 R2006a 之前推出

全部展开