Main Content

swarmchart

群散点图

自 R2020b 起

  • Swarm chart

说明

向量和矩阵数据

示例

swarmchart(x,y) 显示一个分簇散点图,它是一个散点图,点在 x 维度中偏移(抖动)。这些点形成不同形状,每个形状的轮廓类似于小提琴图。分簇散点图有助于您可视化离散的 x 数据以及 y 数据的分布。在 x 中的每个位置,点根据 y 的核密度估计值发生抖动。

  • 要绘制一组点,请将 xy 指定为等长向量。

  • 要在同一组坐标区上绘制多组点,请将 xy 中的至少一个指定为矩阵。

示例

swarmchart(x,y,sz) 指定标记大小。要以相同的大小绘制所有标记,请将 sz 指定为标量。要绘制具有不同大小的标记,请将 sz 指定为向量或矩阵。

示例

swarmchart(x,y,sz,c) 指定标记颜色。您可以为所有标记指定一种颜色,也可以更改颜色。例如,您可以通过将 c 指定为 'red' 来绘制所有红色圆。

示例

swarmchart(___,mkr) 指定不同于默认标记(圆形)的标记。需要在上述任一语法中的所有参量之后指定 mkr

示例

swarmchart(___,'filled') 填充标记。需要在上述任一语法中的所有参量之后指定 'filled' 选项。

表数据

示例

swarmchart(tbl,xvar,yvar) 绘制表 tbl 中的变量 xvaryvar。要绘制一个数据集,请为 xvar 指定一个变量,为 yvar 指定一个变量。要绘制多个数据集,请为 xvaryvar 或两者指定多个变量。如果两个参量都指定多个变量,它们指定的变量数目必须相同。

示例

swarmchart(tbl,xvar,yvar,'filled') 绘制指定的变量并填充标记。

其他选项

示例

swarmchart(ax,___) 在目标坐标区中显示分簇散点图。需要在上述任一语法中的所有参量之前指定坐标区。

示例

swarmchart(___,Name,Value) 使用一个或多个名称-值参量指定群图的其他属性。在所有其他输入参量后指定属性。例如:

  • swarmchart(x,y,'LineWidth',2) 创建一个具有两点标记轮廓的分簇散点图。

  • swarmchart(tbl,'MyX','MyY','ColorVariable','MyColors') 根据表中的数据创建一个分簇散点图,并使用表中的数据自定义标记颜色。

  • swarmchart(x,y,'YJitter','density') 创建一个水平分簇散点图。 (自 R2023b 起)

有关属性列表,请参阅 Scatter 属性

示例

s = swarmchart(___) 返回 Scatter 对象或 Scatter 对象数组。创建图后,使用 s 修改图属性。有关属性列表,请参阅 Scatter 属性

示例

全部折叠

创建一个 x 坐标组成的向量,并使用 randn 函数为 y 生成正态分布的随机值。然后创建一个关于 xy 的分簇散点图。

x = [ones(1,500) 2*ones(1,500) 3*ones(1,500)];
y1 = 2 * randn(1,500);
y2 = 3 * randn(1,500) + 5;
y3 = 5 * randn(1,500) + 5;
y = [y1 y2 y3];
swarmchart(x,y)

创建三组 xy 坐标。使用 randn 函数为 y 生成随机值。

x1 = ones(1,500);
x2 = 2 * ones(1,500);
x3 = 3 * ones(1,500);
y1 = 2 * randn(1,500);
y2 = [randn(1,250) randn(1,250) + 4];
y3 = 5 * randn(1,500) + 5;

创建第一个数据集的分簇散点图,并指定统一标记大小为 5。然后调用 hold on 以将第二个和第三个数据集与第一个数据集一起绘图。调用 hold off 以释放坐标区的保留状态。

swarmchart(x1,y1,5)
hold on
swarmchart(x2,y2,5)
swarmchart(x3,y3,5)
hold off

BicycleCounts.csv 数据集读入名为 tbl 的时间表中。此数据集包含一段时间内的自行车交通流量数据。显示 tbl 的前五行。

tbl = readtable("BicycleCounts.csv");
tbl(1:5,:)
ans=5×5 table
         Timestamp              Day         Total    Westbound    Eastbound
    ___________________    _____________    _____    _________    _________

    2015-06-24 00:00:00    {'Wednesday'}     13          9            4    
    2015-06-24 01:00:00    {'Wednesday'}      3          3            0    
    2015-06-24 02:00:00    {'Wednesday'}      1          1            0    
    2015-06-24 03:00:00    {'Wednesday'}      1          1            0    
    2015-06-24 04:00:00    {'Wednesday'}      1          1            0    

创建一个向量 x,其中包含每个观测值的星期几信息;并创建另一个向量 y,其中包含观测到的自行车流量信息。然后创建一个关于 xy 的分簇散点图,并指定点标记 ('.')。该图显示一周中自行车交通流量每天的分布情况。

daynames = ["Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday"];
x = categorical(tbl.Day,daynames);
y = tbl.Total;
swarmchart(x,y,'.');

BicycleCounts.csv 数据集读入名为 tbl 的时间表中。创建一个向量 x,其中包含每个观测值的星期几信息;创建另一个向量 y,其中包含观测到的自行车交通流量;创建第三个向量 c,其中包含一天中的小时信息。

然后创建一个 xy 的分簇散点图,并将标记大小指定为 20。将标记的颜色指定为向量 c。向量中的值对图窗的颜色图进行索引。因此,颜色根据每个数据点的小时信息而变化。使用 'filled' 选项用颜色填充标记,而不是将其显示为空心圆圈。

tbl = readtable("BicycleCounts.csv");
daynames = ["Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday"];
x = categorical(tbl.Day,daynames);
y = tbl.Total;
c = hour(tbl.Timestamp);
swarmchart(x,y,20,c,'filled');

BicycleCounts.csv 数据集读入名为 tbl 的时间表中。创建一个向量 x,其中包含每个观测值的星期几信息;创建另一个向量 y,其中包含观测到的自行车交通流量;创建第三个向量 c,其中包含一天中的小时信息。然后创建一个关于 xy 的分簇散点图,指定标记大小为 5,标记的颜色为向量 c。调用带返回参量 sswarmchart 函数,以便在创建图后修改它。

tbl = readtable("BicycleCounts.csv");
daynames = ["Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday"];
x = categorical(tbl.Day,daynames);
y = tbl.Total;
c = hour(tbl.Timestamp);
s = swarmchart(x,y,5,c);

在每个 x 位置更改簇的形状,使点均匀随机分布,间距限制为不超过 0.5 个数据单位。

s.XJitter = 'rand';
s.XJitterWidth = 0.5;

自 R2023b 起

当您调用 swarmchart 函数时,可以通过设置 YJitter 属性来创建水平分簇散点图。

例如,创建三个 500 个数字的正态分布和一个由城镇名称组成的分类向量。然后通过调用 swarmchart 函数并指定 YJitter 名称-值参量来创建数据的水平分簇散点图。

x = randn(500,3) + [1 4 6];
towns = categorical(["Stowe" "Wayland" "Natick"]);
y = repmat(towns,500,1);
swarmchart(x,y,YJitter="density")

创建一对 xy 坐标。使用 randn 函数为 y 生成随机值。然后创建一个带填充标记的分簇散点图,标记的面和边均为 50% 透明。

x1 = ones(1,500);
x2 = 2 * ones(1,500);
x = [x1 x2];
y1 = 2 * randn(1,500);
y2 = [randn(1,250) randn(1,250) + 4];
y = [y1 y2];
swarmchart(x,y,'filled','MarkerFaceAlpha',0.5,'MarkerEdgeAlpha',0.5)

绘制表中数据的一种便捷方法是将表传递给 swarmchart 函数,并指定要绘制的变量。例如,创建一个包含三个随机数变量的表,并绘制 XY1 变量。默认情况下,轴标签与变量名称匹配。

tbl = table(randi(2,100,1),randn(100,1),randn(100,1)+10, ...
   'VariableNames',{'X','Y1','Y2'});

swarmchart(tbl,'X','Y1')

您也可以同时绘制多个变量。例如,通过将 yvar 参量指定为元胞数组 {'Y1','Y2'}y 轴上绘制 Y1Y2 变量。然后,添加一个图例。图例标签与变量名称匹配。

swarmchart(tbl,'X',{'Y1','Y2'})
legend

绘制表中数据并自定义颜色和标记大小的一种方法是设置 ColorVariableSizeData 属性。您可以在调用 swarmchart 函数时将这些属性设置为名称-值参量,也可以稍后在 Scatter 对象上设置它们。

例如,创建一个包含三个随机数变量的表,并用填充标记绘制 XY 变量。通过指定 ColorVariable 名称-值参量来更改标记颜色。将 Scatter 对象返回为 s,以便以后可以设置其他属性。

tbl = table(randi(2,100,1),randn(100,1),randn(100,1), ...
   'VariableNames',{'X','Y','Colors'});

s = swarmchart(tbl,'X','Y','filled','ColorVariable','Colors');

通过设置 SizeData 属性,将标记大小更改为 100 磅。

s.SizeData = 100;

BicycleCounts.csv 数据集读入名为 tbl 的时间表中。此数据集包含一段时间内的自行车交通流量数据。显示 tbl 的前五行。

tbl = readtable("BicycleCounts.csv");
tbl(1:5,:)
ans=5×5 table
         Timestamp              Day         Total    Westbound    Eastbound
    ___________________    _____________    _____    _________    _________

    2015-06-24 00:00:00    {'Wednesday'}     13          9            4    
    2015-06-24 01:00:00    {'Wednesday'}      3          3            0    
    2015-06-24 02:00:00    {'Wednesday'}      1          1            0    
    2015-06-24 03:00:00    {'Wednesday'}      1          1            0    
    2015-06-24 04:00:00    {'Wednesday'}      1          1            0    

x 定义为表中表示周中日期的分类数组。将 yEastyWest 定义为包含东行和西行自行车交通流量计数的向量。

daynames = ["Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday"];
x = categorical(tbl.Day,daynames);
yEast = tbl.Eastbound;
yWest = tbl.Westbound;

创建一个采用 'flow' 图块排列方式的分块图布局,以便坐标区填充布局中的可用空间。调用 nexttile 函数创建一个坐标区对象,并返回它作为 ax1。然后通过将 ax1 传递给 swarmchart 函数,创建一个东行数据的分簇散点图。

tiledlayout('flow')
ax1 = nexttile;
y = tbl.Eastbound;
swarmchart(ax1,x,y,'.')

重复该过程,为西行交通流量创建另一个坐标区对象和分簇散点图。

ax2 = nexttile;
y = tbl.Westbound;
swarmchart(ax2,x,y,'.')

输入参数

全部折叠

x 坐标,指定为标量、向量或矩阵。x 的大小和形状取决于数据的形状。下表说明了最常见的情况。

绘图类型如何指定坐标
单点

xy 指定为标量。例如:

swarmchart(1,1)

一组点

指定 xy 为相同长度的行向量或列向量的任意组合。例如:

x = randi(3,100,1);
y = randn(1,100);
swarmchart(x,y)

不同颜色的多组点

如果所有组共享相同的 x 或 y 坐标,请将共享坐标指定为一个向量,将其他坐标指定为一个矩阵。该向量的长度必须与该矩阵的维度之一相匹配。例如:

x = randi(2,1,100); 
y = [randn(100,1) randn(100,1)+5];
swarmchart(x,y,100)
如果矩阵是方阵,swarmchart 将为矩阵中的每列绘制一组单独的点。

也可以指定 xy 为相同大小的矩阵。在本例中,swarmchart 绘制 y 的每列对 x 的对应列的图。例如:

x = randi(2,100,2);
y = [randn(100,1) randn(100,1)+5];
swarmchart(x,y,100)

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

y 坐标,指定为标量、向量或矩阵。y 的大小和形状取决于数据的形状。下表说明了最常见的情况。

绘图类型如何指定坐标
单点

xy 指定为标量。例如:

swarmchart(1,1)

一组点

指定 xy 为相同长度的行向量或列向量的任意组合。例如:

x = randi(3,100,1);
y = randn(1,100);
swarmchart(x,y)

不同颜色的多组点

如果所有组共享相同的 x 或 y 坐标,请将共享坐标指定为一个向量,将其他坐标指定为一个矩阵。该向量的长度必须与该矩阵的维度之一相匹配。例如:

x = randi(2,1,100); 
y = [randn(100,1) randn(100,1)+5];
swarmchart(x,y,100)
如果矩阵是方阵,swarmchart 将为矩阵中的每列绘制一组单独的点。

也可以指定 xy 为相同大小的矩阵。在本例中,swarmchart 绘制 y 的每列对 x 的对应列的图。例如:

x = randi(2,100,2);
y = [randn(100,1) randn(100,1)+5];
swarmchart(x,y,100)

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

标记大小,指定为数值标量、向量、矩阵或空数组 ([])。大小控制每个标记的区域(以点方阵为单位)。空数组指定 36 磅的默认大小。指定大小的方式取决于您如何指定 xy,以及您所需的绘图外观。下表说明了最常见的情况。

所需的标记大小xy sz示例

所有点的大小均相同

针对 xy 所述的向量或矩阵的任意有效组合。

标量

x 指定为向量,将 y 指定为矩阵,将 sz 指定为标量。

x = randi(2,1,100); 
y = randn(100,1); 
swarmchart(x,y,100)

每个点的大小不同

相同长度的向量

  • xy 长度相同的向量。

  • 有至少一个维度与 xy 长度匹配的矩阵。指定矩阵对于在每个 (x,y) 位置显示具有不同大小的多个标记非常有用。

xysz 指定为向量。

x = randi(2,1,100); 
y = randn(100,1); 
sz = randi([70 2000],100,1);
swarmchart(x,y,sz)

xy 指定为向量,将 sz 指定为矩阵。

x = randi(2,1,100); 
y = randn(100,1); 
sz = randi([70 2000],100,2);
swarmchart(x,y,sz)

每个点的大小不同

xy 中有至少一个是用于绘制多个数据集的矩阵

  • 其元素数与每个数据集中的点数相同的向量。

  • xy 矩阵大小相同的矩阵。

x 指定为向量,将 y 指定为矩阵,将 sz 指定为向量。

x = randi(2,1,100);
y = [randn(100,1) randn(100,1)+5];
sz = randi([70 2000],100,1);
swarmchart(x,y,sz)

x 指定为向量,将 y 指定为矩阵,将 sz 指定为与 y 大小相同的矩阵。

x = randi(2,1,100); 
y = [randn(100,1) randn(100,1)+5]; 
sz = randi([70 2000],100,2);
swarmchart(x,y,sz)

标记颜色,指定为颜色名称、RGB 三元组、RGB 三元组矩阵或由颜色图索引组成的向量。

  • 颜色名称 - 颜色名称(如 'red')或短名称(如 'r')。

  • RGB 三元组 - 三元素行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度值必须位于 [0,1] 范围内,例如 [0.4 0.6 0.7]。RGB 三元组对于创建自定义颜色很有用。

  • RGB 三元组矩阵 - 三列矩阵,其中的每一行均为一个 RGB 三元组。

  • 由颜色图索引组成的向量 - 数值向量,其长度与 xy 向量相同。

指定颜色的方式取决于所需的颜色方案以及是绘制一组坐标还是多组坐标。下表说明了最常见的情况。

颜色方案指定颜色的方式示例

对所有点使用一种颜色。

从下表中指定一种颜色名称或短名称,或指定一个 RGB 三元组。

绘制一组点,并将颜色指定为 'red'

x = randi(2,1,100); 
y = randn(100,1); 
c = 'red';
swarmchart(x,y,[],c)

绘制两组点,并使用一个 RGB 三元组将颜色指定为红色。

x = randi(2,1,100); 
y = randn(100,1); 
c = [0.6 0 0.9];
swarmchart(x,y,[],c)

使用颜色图为每个点指定不同颜色。

指定一个由数字组成的行向量或列向量。当前颜色图数组中的数值索引。最小值映射到颜色图中的第一行,最大值映射到最后一行。中间值线性映射到中间行。

如果您的绘图有三个点,请指定一个列向量,以确保这些值被解释为颜色图索引。

仅当 xysz 均为向量时,才能使用此方法。

创建一个向量 c,它指定 100 个颜色图索引。使用当前颜色图中的颜色绘制 100 个点。然后,将颜色图更改为 winter

x = randi(2,1,100); 
y = randn(100,1);
c = 1:100;
swarmchart(x,y,[],c)
colormap(gca,'winter')

为每个点创建一种自定义颜色。

指定一个由 RGB 三元组组成的 m×3 矩阵,其中 m 是图中的点数。

仅当 xysz 均为向量时,才能使用此方法。

创建一个指定 100 个随机 RGB 三元组的矩阵 c。然后使用这些颜色创建一个包含 100 个点的分簇散点图。

x = randi(2,1,100); 
y = randn(100,1); 
c = rand(100,3);
swarmchart(x,y,[],c)

为每个数据集创建一种不同颜色。

指定一个由 RGB 三元组组成的 n×3 矩阵,其中 n 为数据集个数。

仅当 xysz 中有至少一个是矩阵时,才能使用此方法。

创建一个包含两个 RGB 三元组的矩阵 c。然后使用这些颜色绘制两个数据集。

x = randi(2,100,2); 
y = [randn(100,1) randn(100,1)+5]; 
c = [1 0 0; 0 0 1];
swarmchart(x,y,[],c)

常见颜色的颜色名称和 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

以下是 MATLAB® 在许多类型的绘图中使用的默认颜色的 RGB 三元组和十六进制颜色代码。

RGB 三元组十六进制颜色代码外观
[0 0.4470 0.7410]"#0072BD"

Sample of RGB triplet [0 0.4470 0.7410], which appears as dark blue

[0.8500 0.3250 0.0980]"#D95319"

Sample of RGB triplet [0.8500 0.3250 0.0980], which appears as dark orange

[0.9290 0.6940 0.1250]"#EDB120"

Sample of RGB triplet [0.9290 0.6940 0.1250], which appears as dark yellow

[0.4940 0.1840 0.5560]"#7E2F8E"

Sample of RGB triplet [0.4940 0.1840 0.5560], which appears as dark purple

[0.4660 0.6740 0.1880]"#77AC30"

Sample of RGB triplet [0.4660 0.6740 0.1880], which appears as medium green

[0.3010 0.7450 0.9330]"#4DBEEE"

Sample of RGB triplet [0.3010 0.7450 0.9330], which appears as light blue

[0.6350 0.0780 0.1840]"#A2142F"

Sample of RGB triplet [0.6350 0.0780 0.1840], which appears as dark red

标记类型,指定为下表中列出的值之一。

标记描述生成的标记
"o"圆圈

Sample of circle marker

"+"加号

Sample of plus sign marker

"*"星号

Sample of asterisk marker

"."

Sample of point marker

"x"叉号

Sample of cross marker

"_"水平线条

Sample of horizontal line marker

"|"垂直线条

Sample of vertical line marker

"square"方形

Sample of square marker

"diamond"菱形

Sample of diamond marker

"^"上三角

Sample of upward-pointing triangle marker

"v"下三角

Sample of downward-pointing triangle marker

">"右三角

Sample of right-pointing triangle marker

"<"左三角

Sample of left-pointing triangle marker

"pentagram"五角形

Sample of pentagram marker

"hexagram"六角形

Sample of hexagram marker

用于填充标记内部的选项,指定为 'filled'。此选项和具有一个面的标记(例如,'o''square')一起使用。没有面而只包含边的标记根本无法呈现,如 '+''*''.''x'

'filled' 选项将 Scatter 对象的 MarkerFaceColor 属性设置为 'flat',并将 MarkerEdgeColor 属性设置为 'none'。在这种情况下,MATLAB 绘制标记面,但不绘制边。

包含要绘制的数据的源表,指定为表或时间表。

包含 x 坐标的表变量,指定为一个或多个表变量索引。

指定表索引

使用以下任一索引方案指定所需的一个或多个变量。

索引方案示例

变量名称:

  • 字符串、字符向量或元胞数组。

  • pattern 对象。

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

  • ["A","B"]{'A','B'} - 两个名为 AB 的变量

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

变量索引:

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

  • 由数字组成的向量。

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

  • 3 - 表中的第三个变量

  • [2 3] - 表中的第二个和第三个变量

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

变量类型:

  • vartype 下标,用于选择指定类型的变量。

  • vartype("categorical") - 包含分类值的所有变量

绘制您的数据

您指定的表变量可以包含数值或分类值。

要绘制一个数据集,请为 xvar 指定一个变量,为 yvar 指定一个变量。例如,创建一个包含三个正态分布随机值变量的表。绘制 X1Y 变量。

tbl = table(randn(100,1),randn(100,1)+10,randn(100,1), ...
   'VariableNames',{'X1','X2','Y'});
swarmchart(tbl,'X1','Y')

要一起绘制多个数据集,请为 xvaryvar 或两者指定多个变量。如果为两个参量都指定多个变量,则每个参量的变量数目必须相同。

例如,在 x 轴上绘制 X1X2 变量,在 y 轴上绘制 Y 变量。

swarmchart(tbl,{'X1','X2'},'Y')

您也可以对 xvaryvar 使用不同索引方案。例如,将 xvar 指定为变量名称,将 yvar 指定为索引编号。

swarmchart(tbl,'X1',3)

包含 y 坐标的表变量,指定为一个或多个表变量索引。

指定表索引

使用以下任一索引方案指定所需的一个或多个变量。

索引方案示例

变量名称:

  • 字符串、字符向量或元胞数组。

  • pattern 对象。

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

  • ["A","B"]{'A','B'} - 两个名为 AB 的变量

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

变量索引:

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

  • 由数字组成的向量。

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

  • 3 - 表中的第三个变量

  • [2 3] - 表中的第二个和第三个变量

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

变量类型:

  • vartype 下标,用于选择指定类型的变量。

  • vartype("categorical") - 包含分类值的所有变量

绘制您的数据

您指定的表变量可以包含数值、分类、日期时间或持续时间值。

要绘制一个数据集,请为 xvar 指定一个变量,为 yvar 指定一个变量。例如,创建一个包含三个正态分布随机值变量的表。绘制 X1Y 变量。

tbl = table(randn(100,1),randn(100,1)+10,randn(100,1), ...
   'VariableNames',{'X1','X2','Y'});
swarmchart(tbl,'X1','Y')

要一起绘制多个数据集,请为 xvaryvar 或两者指定多个变量。如果为两个参量都指定多个变量,则每个参量的变量数目必须相同。

例如,在 x 轴上绘制 X1X2 变量,在 y 轴上绘制 Y 变量。

swarmchart(tbl,{'X1','X2'},'Y')

您也可以对 xvaryvar 使用不同索引方案。例如,将 xvar 指定为变量名称,将 yvar 指定为索引编号。

swarmchart(tbl,'X1',3)

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

名称-值参数

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

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: swarmchart(randi(4,500,1),randn(500,1),'MarkerFaceColor','red') 指定红色填充标记。

注意

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

沿 x 维度的抖动类型(点的间距),指定为下列值之一:

  • 'none' - 不抖动点。

  • 'density' - 使用二维图的 y 的内核密度估计值对点进行抖动。如果在三维图的两个维度中指定此选项,则点会根据第三个维度中的内核密度估计值抖动。例如,将 XJitterYJitter 设置为 'density' 会使用 z 的内核密度估计值。

  • 'rand' - 以均匀分布随机抖动点。

  • 'randn' - 以正态分布随机抖动点。

沿 x 维度的最大抖动量(点之间的偏移量),以数据单位指定为非负标量值。

例如,要将抖动宽度设置为邻点之间最短距离的 90%,请取 x 的唯一值之间的最小距离并按 0.9 进行缩放。

XJitterWidth = 0.9 * min(diff(unique(x)));

包含颜色数据的表变量,指定为源表的变量索引。

指定表索引

使用以下任一索引方案指定所需的变量。

索引方案示例

变量名称:

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

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

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

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

变量索引:

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

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

  • 3 - 表中的第三个变量

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

变量类型:

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

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

指定颜色数据

指定 ColorVariable 属性控制标记的颜色。当 MarkerFaceColor 属性设置为 "flat" 时,变量中的数据控制标记填充颜色。当 MarkerEdgeColor 设置为 "flat" 时,数据还可以控制标记轮廓颜色。

您指定的表变量可以包含任何数值类型的值。这些值可以是以下形式之一:

  • 线性映射到当前颜色图中的一列数字。

  • 由 RGB 三元组组成的一个三列数组。RGB 三元组是包含三个元素的向量,其元素值指定特定颜色的红、绿和蓝分量的强度。强度必须处于范围 [0,1] 中。例如,[0.5 0.7 1] 指定浅蓝色。

当您设置 ColorVariable 属性时,MATLAB 会更新 CData 属性。

算法

分簇散点图中的点使用均匀随机值进行抖动,这些值由 y 的高斯核密度估计值和每个 x 位置处的相对点数进行加权。当您调用 swarmchart 函数时,此行为对应于 Scatter 对象的 XJitter 属性的默认 'density' 设置。

默认情况下,每个 x 位置处的点的最大散布是相邻 x 值之间最小距离的 90%:

spread = 0.9 * min(diff(unique(x)));

您可以通过设置 Scatter 对象的 XJitterWidth 属性来控制散布。

使用相同的算法抖动水平分簇散点图,但使用 x 的高斯核密度估计值沿 y 维度抖动各点。在本例中,您使用 YJitterWidth 属性来控制散布。

版本历史记录

在 R2020b 中推出

全部展开