主要内容

donutchart

环形图

自 R2023b 起

  • Donut chart

说明

向量数据

donutchart(data) 创建向量 data 中的值的环形图。每个扇区都有一个标签,指示其大小占整个环形图的百分比。

示例

donutchart(data,names) 为扇区指定名称。当指定扇区名称时,它们会包含在扇区标签中。

示例

donutchart(categoricaldata) 创建分类值的环形图。一个类别的实例数量确定对应扇区的大小,每个扇区标签包含类别名称。

示例

表数据

donutchart(tbl,datavar) 根据表 tbl 中的变量 datavar 创建环形图。对于表中的每行,生成的环形图都有一个对应的扇区。

donutchart(tbl,datavar,namesvar) 指定用于扇区名称的变量 namesvar。如果 namesvar 包含重复的名称,MATLAB® 会显示多个具有相同名称的扇区。

示例

donutchart(tbl,categoricalvar) 指定分类变量 categoricalvar。一个类别的实例数量确定对应扇区的大小,每个扇区标签包含对应的类别名称。

其他选项

donutchart(parent,___) 在指定的父容器中创建环形图。父容器通常是图窗、面板或选项卡。指定 parent 作为上述任何语法中的第一个参量。

donutchart(___,Name=Value) 使用一个或多个名称-值参量指定图的属性。在所有其他输入参量之后指定名称-值参量。例如,donutchart([1 2 3],ExplodedWedges=2) 创建第二个扇区偏移的环形图。

有关属性列表,请参阅 DonutChart Properties

示例

d = donutchart(___) 返回 DonutChart 对象。在创建图后,使用 d 设置其属性。有关属性列表,请参阅 DonutChart Properties

示例

示例

全部折叠

根据数值向量创建一个环形图。默认情况下,每个扇区标签显示一个百分比值。

data = [1 2 3 4];
donutchart(data)

Figure contains an object of type donutchart.

根据分类向量创建一个环形图。donutchart 函数对每个类别的实例数量进行计数,以确定每个扇区的大小。

通过调用 reordercats 函数控制扇区的顺序。

flavors = categorical(["Glazed","Pumpkin","Pumpkin","MATLAB","Boston Creme"]);
flavors = reordercats(flavors,["MATLAB","Pumpkin","Boston Creme","Glazed"]);
donutchart(flavors)

Figure contains an object of type donutchart.

创建一个表,其中包含甜甜圈竞赛中烘焙师的姓名以及对应的得票数。

Bakers = ["Betty";"Abby";"Afiq";"Ravi";"Dave"];
Votes = [2; 5; 5; 2; 5];
tbl = table(Bakers,Votes)
tbl=5×2 table
    Bakers     Votes
    _______    _____

    "Betty"      2  
    "Abby"       5  
    "Afiq"       5  
    "Ravi"       2  
    "Dave"       5  

根据该表创建一个环形图。

donutchart(tbl,"Votes","Bakers")

Figure contains an object of type donutchart.

您可以通过设置属性来指定旋转方向并沿圆移动所有扇区。您可以在调用 donutchart 函数时通过指定名称-值参量来设置属性,也可以稍后设置 DonutChart 对象的属性。

创建一个名为 data 的向量,并用它创建一个环形图。默认情况下,扇区按顺时针方向出现,第一个(蓝色)扇区的左边位于 0 度(12 点钟方向)。

data = [1 2 3 4];
donutchart(data)

Figure contains an object of type donutchart.

创建另一个环形图,但这次通过将 Direction 属性指定为名称-值参量将该属性设置为 "counterclockwise"。带一个输出参量调用 donutchart 函数以存储 DonutChart 对象。

p = donutchart(data,Direction="counterclockwise");

Figure contains an object of type donutchart.

通过将 DonutChart 对象的 StartAngle 属性设置为 -90,将扇区逆时针方向移位 90 度。

p.StartAngle = -90;

Figure contains an object of type donutchart.

您可以通过设置 LabelStyle 属性,将扇区标签从百分比更改为计数。LabelStyle 属性具有用于显示扇区名称、数据值和百分比的不同组合的选项。

根据数值向量和名称向量创建一个环形图。指定输出参量以存储 DonutChart 对象。然后将标签更改为包含数据值而不是百分比。

data = [1 2 3];
names = ["Jelly","Glazed","Frosted"];
d = donutchart(data,names);
d.LabelStyle = "namedata";

Figure contains an object of type donutchart.

另一个选项是仅显示名称,不显示任何数据或百分比值。

d.LabelStyle="name";

Figure contains an object of type donutchart.

创建一个环形图,显示烘焙销售中每个参与者的销售额占总销售额的百分比。使用输出参量调用 donutchart 函数以存储 DonutChart 对象,以便稍后更改图的各个方面。

Bakers = ["Betty","Abby","Afiq","Ravi","Dave"];
Sales = [20 51.55 49.37 20.35 48.25];
d = donutchart(Sales,Bakers);

Figure contains an object of type donutchart.

查询 DonutChart 对象的扇区名称。

d.Names
ans = 1×5 string
    "Betty"    "Abby"    "Afiq"    "Ravi"    "Dave"

将扇区名称更改为甜甜圈口味。

d.Names = ["Jelly","Glazed","Frosted","Chocolate","Plain"];

Figure contains an object of type donutchart.

将每个标签显示为两行文本,第一行为甜甜圈口味,第二行为销售额。要组合每个标签的不同元素,请从 Names 属性开始,并添加换行符、美元符号和 Sales 向量(转换为字符串)。

d.Labels = d.Names + "\newline$" + string(Sales);

Figure contains an object of type donutchart.

自 R2024b 起

您可以使用 colororder 函数更改环形图的颜色。例如,创建一个具有默认颜色的环形图。

donutchart([1 2 3 4])

Figure contains an object of type donutchart.

您可以从几个命名的调色板中进行选择,包括 gem(默认值)、glowsailreefmeadowdyeearth。将调色板更改为 meadow

colororder meadow

Figure contains an object of type donutchart.

将调色板更改为 sail

colororder sail

Figure contains an object of type donutchart.

通过设置 NumDisplayWedges 属性,可以将多个小扇区的数据合并到一个名为 "Others" 的扇区中。也可以通过设置 DisplayOrder 属性,按升序或降序排列扇区。

例如,创建一个环形图,显示公司每个部门的员工数量。在创建图时,指定输出参量来存储 DonutChart 对象,以便可以稍后修改它。

employees = [100 10 50 30 25 10 15];
departments = ["Engineering" "Sales" "User Experience" "Documentation" "IT" "HR" "Security"];
d = donutchart(employees,departments,LabelStyle="name");

Figure contains an object of type donutchart.

根据员工数量按降序排列扇区。

d.DisplayOrder = "descend";

Figure contains an object of type donutchart.

显示三个扇区,并将其他扇区合并到第四个名为 "Others" 的扇区中。由于扇区通过 DisplayOrder 属性按降序排序,因此将 NumDisplayWedges 设置为 3 会显示三个最大的扇区。

d.NumDisplayWedges = 3;

Figure contains an object of type donutchart.

要在一个图窗中创建多个图,请使用分块图布局。

创建 1×2 分块图布局。通过先后调用 nexttile 函数和 donutchart 函数创建第一个图。然后通过调用 title 函数添加标题。对第二个图重复这些步骤。

tiledlayout(1,2)
nexttile
donutchart([1 2 3 4])
title("2022 Totals")
nexttile
donutchart([10 3 1 5 6 4])
title("2023 Totals")

Figure contains objects of type donutchart. The chart of type donutchart has title 2022 Totals. The chart of type donutchart has title 2023 Totals.

输入参数

全部折叠

扇区数据,指定为数值向量或持续时间值向量。每个扇区的大小表示为整个环形图的百分比,具体取决于 data 元素的总和:

  • 如果 sum(data) < 1,则 data 的值指定扇区的面积,结果为部分环形图。

  • 如果 sum(data)1,则 MATLAB 通过 data/sum(data) 对值进行归一化,以确定每个扇区的面积。

示例: donutchart([0.1 0.2 0.3]) 创建部分环形图。

示例: donutchart([1 2 3 4]) 使用总和大于 1 的值创建环形图。

示例: donutchart([0.5 0.25 0.25]) 使用总和为 1 的比例值创建环形图。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | duration

扇区名称,指定为字符串向量、字符向量元胞数组或包含数值、持续时间、日期时间或分类值的向量。该向量或元胞数组必须与 data 具有相同数量的元素。扇区名称和扇区百分比包含在扇区标签中。

示例: donutchart([1 2 3],["Apples","Cherries","Grapes"]) 将名称指定为字符串向量。

示例: donutchart([1 2 3],categorical(["Apples","Cherries","Grapes"])) 将名称指定为分类向量。

示例: donutchart([10 20 30],minutes([1 2 3])) 将名称指定为持续时间向量。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | duration | datetime | categorical | string | cell

分类扇区数据,指定为分类向量。每个扇区的大小与对应的值在向量中出现的次数成比例。扇区名称是类别名称。

示例: donutchart(categorical(["Apples","Cherries","Grapes","Oranges"])) 创建一个具有四个相同大小扇区的环形图。

示例: donutchart(categorical(["Apples","Cherries","Cherries", "Cherries"])) 创建一个环形图,其中 "Cherries" 扇区占环形图的 3/4。"Apples" 扇区占环形图的其余 1/4。

数据类型: categorical | logical

包含扇区数据的源表,指定为表或时间表。

包含扇区数据的表变量,使用下表中的索引方案之一指定。您指定的表变量可以包含数值或持续时间值。

索引方案示例

变量名称:

  • 字符串标量或字符向量。

  • pattern 对象。模式对象只能引用一个变量。

  • "A"'A' - 名为 A 的变量

  • "Var"+digitsPattern(1) - 名称为 "Var" 的变量后跟一位数字

变量索引:

  • 引用变量在表中位置的索引编号。

  • 逻辑向量。通常,此向量的长度与变量的数目相同,但可以省略尾部的 0false 值。

  • 3 - 表中的第三个变量

  • [false false true] - 第三个变量

变量类型:

  • vartype 下标,用于选择指定类型的表变量。该下标只能引用一个变量。

  • vartype("double") - 包含双精度值的变量

示例: donutchart(tbl,"mydata") 指定名为 mydata 的表变量。

包含扇区名称的表变量,使用下表中的索引方案之一指定。您指定的表变量可以包含字符串向量、字符向量元胞数组或由数值、日期时间、持续时间或分类值组成的向量。

索引方案示例

变量名称:

  • 字符串标量或字符向量。

  • pattern 对象。模式对象只能引用一个变量。

  • "A"'A' - 名为 A 的变量

  • "Var"+digitsPattern(1) - 名称为 "Var" 的变量后跟一位数字

变量索引:

  • 引用变量在表中位置的索引编号。

  • 逻辑向量。通常,此向量的长度与变量的数目相同,但可以省略尾部的 0false 值。

  • 3 - 表中的第三个变量

  • [false false true] - 第三个变量

变量类型:

  • vartype 下标,用于选择指定类型的表变量。该下标只能引用一个变量。

  • vartype("double") - 包含双精度值的变量

示例: donutchart(tbl,"mydata","mynames") 使用变量 mydata 中的扇区数据和变量 mynames 中的扇区名称创建环形图。

包含分类数据的表变量,使用下表中的索引方案之一指定。您指定的表变量可以包含分类数据或逻辑值。一个类别的实例数量确定对应扇区的大小。

索引方案示例

变量名称:

  • 字符串标量或字符向量。

  • pattern 对象。模式对象只能引用一个变量。

  • "A"'A' - 名为 A 的变量

  • "Var"+digitsPattern(1) - 名称为 "Var" 的变量后跟一位数字

变量索引:

  • 引用变量在表中位置的索引编号。

  • 逻辑向量。通常,此向量的长度与变量的数目相同,但可以省略尾部的 0false 值。

  • 3 - 表中的第三个变量

  • [false false true] - 第三个变量

变量类型:

  • vartype 下标,用于选择指定类型的表变量。该下标只能引用一个变量。

  • vartype("double") - 包含双精度值的变量

示例: donutchart(tbl,"mycats") 指定名为 mycats 的表变量。

父容器,指定为 FigurePanelTabTiledChartLayoutGridLayout 对象。

名称-值参数

全部折叠

将可选参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。

示例: donutchart([1 2 3 4],StartAngle=90) 创建一个起始角度为 90 度的环形图。

注意

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

偏移扇区,对于数值数据,指定为数值向量或逻辑向量。如果使用分类数据创建图,则可以指定包含一个或多个类别名称的字符串向量或字符向量。此环形图中的橙色扇区经过偏移。

Donut chart with the second slice offset

示例: donutchart([5 7 4 6],ExplodedWedges=3) 创建第三个扇区有偏移的环形图。

示例: donutchart([5 7 4 6],ExplodedWedges=[1 3]) 创建第一个和第三个扇区有偏移的环形图。

示例: donutchart([5 7 4 6],ExplodedWedges=[false false true false]) 创建第三个扇区有偏移的环形图。

示例: donutchart(categorical(["A" "B" "C" "D"]),ExplodedWedges="B") 使用分类数据创建环形图,其中扇区 B 经过偏移。

内径,指定为范围 [0, 1] 中的标量。值为 0 会创建一个没有孔的饼图,值为 1 会创建一个没有明显扇区的细环。

Comparison of three donut charts with different inner radius values. Smaller values create smaller holes with thicker donut walls, and larger values create larger holes with thinner donut walls.

第一个扇区的起始角度,指定为以度为单位的标量值。默认情况下,起始角度为 0 度。正值使扇区按顺时针方向旋转。负值使扇区按逆时针方向旋转。

您可以通过考虑时钟上数字的排列来想象起始角度的位置。起始角度为 0 度对应于 12 点钟方向,起始角度为 90 度对应于 3 点钟方向。

Two donut charts with different starting angles. One chart has a starting angle of 0 degrees, and the other chart has a starting angle of 90 degrees.

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

用于添加扇区的方向,指定为 "clockwise""counterclockwise"

  • "clockwise" - 按顺时针方向添加扇区。

  • "counterclockwise" - 按逆时针方向添加扇区。

输出参量

全部折叠

DonutChart 对象,它是一个独立可视化。在创建环形图后,使用 d 设置图的属性。

详细信息

全部折叠

版本历史记录

在 R2023b 中推出

全部展开