swarmchart3
三维群散点图

语法
说明
向量数据
表数据
其他选项
swarmchart3(___, 使用一个或多个 Name,Value)Name,Value 参量指定群散点图的其他属性。例如:
swarmchart3(x,y,z,'LineWidth',2)创建一个具有两点标记轮廓的群散点图。swarmchart3(tbl,'MyX','MyY','MyZ','ColorVariable','MyColors')根据表中的数据创建一个群散点图,并使用表中的数据自定义标记颜色。
有关属性列表,请参阅 Scatter 属性。
s = swarmchart3(___) 返回 Scatter 对象。创建图后,使用 s 修改图属性。有关属性列表,请参阅 Scatter 属性。
示例
将 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。
daynames = ["Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday"]; x = categorical(tbl.Day,daynames);
根据表中每个观测值的时间,创建一个包含值 "pm" 或 "am" 的分类向量 y。创建东行交通数据的向量 z。然后创建一个关于 x、y 和 z 的群散点图。该图显示一周中每个白天和晚上的数据分布。
ispm = tbl.Timestamp.Hour < 12; y = categorical; y(ispm) = "pm"; y(~ispm) = "am"; z= tbl.Eastbound; swarmchart3(x,y,z);

将向量 x 创建为 0 和 1 的组合,将 y 创建为全为 1 的向量。将 z 创建为随机数平方的向量。然后创建一个关于 x、y 和 z 的群散点图,并将标记大小指定为 5。
x = [zeros(1,500) ones(1,500)]; y = ones(1,1000); z = randn(1,1000).^2; swarmchart3(x,y,z,5);

将向量 x 创建为 0 和 1 的组合,将 y 创建为全为 1 的向量。将 z 创建为随机数平方的向量。然后创建一个 x、y 和 z 的群散点图,并指定点 ('.') 标记符号。
x = [zeros(1,500) ones(1,500)];
y = ones(1,1000);
z = randn(1,1000).^2;
swarmchart3(x,y,z,'.');
创建包含 0 和 1 的组合的向量 x,创建包含 1 和 2 的随机组合的向量 y。将 z 创建为随机数平方的向量。通过创建向量 c 作为 z 的平方根,指定标记的颜色。然后创建一个关于 x、y 和 z 的群散点图。将标记大小设置为 50,并将颜色指定为 c。c 中的值对图窗的颜色图进行索引。使用 'filled' 选项用颜色填充标记,而不是将其显示为空心圆圈。
x = [zeros(1,500) ones(1,500)];
y = randi(2,1,1000);
z = randn(1,1000).^2;
c = sqrt(z);
swarmchart3(x,y,z,50,c,'filled');
创建包含 0 和 1 的组合的向量 x,创建包含数字 1 到 4 的随机组合的向量 y。将 z 创建为随机数平方的向量。然后通过调用带返回参量(用于存储 Scatter 对象)的 swarmchart 函数,创建一个 x、y 和 z 的群散点图。添加 x 轴和 y 轴标签,以便您可以看到在每个维度中更改抖动属性的效果。
x = [zeros(1,500) ones(1,500)]; y = randi(4,1,1000); z = randn(1,1000).^2; s = swarmchart3(x,y,z); xlabel('X') ylabel('Y')

通过设置 Scatter 对象的抖动属性更改点簇的形状。在 x 维度中,指定均匀随机抖动,并将抖动宽度更改为 0.5 个数据单位。在 y 维度中,指定正态随机抖动,并将抖动宽度更改为 0.1 个数据单位。点之间的间距不超过您指定的抖动宽度。
s.XJitter = 'rand'; s.XJitterWidth = 0.5; s.YJitter = 'randn'; s.YJitterWidth = 0.1;

绘制表中数据的一种便捷方法是将表传递给 swarm3 函数,并指定要绘制的变量。例如,创建一个包含四个随机数变量的表,并绘制 X、Y1 和 Z 变量。默认情况下,轴标签与变量名称匹配。
tbl = table(randi(2,100,1),randi(2,100,1),randi([10 11],100,1), ... randn(100,1),'VariableNames',{'X','Y1','Y2','Z'}); swarmchart3(tbl,'X','Y1','Z')

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

绘制表中数据并自定义颜色和标记大小的一种方法是设置 ColorVariable 和 SizeData 属性。您可以在调用 swarmchart3 函数时将这些属性设置为名称-值参量,也可以稍后在 Scatter 对象上设置它们。
例如,创建一个包含四个随机数变量的表,并用填充标记绘制 X、Y 和 Z 变量。通过指定 ColorVariable 名称-值参量来更改标记颜色。将 Scatter 对象返回为 s,以便以后可以设置其他属性。
tbl = table(randi(2,100,1),randn(100,1),randn(100,1),randn(100,1), ... 'VariableNames',{'X','Y','Z','Colors'}); s = swarmchart3(tbl,'X','Y','Z','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,其中包含每个观测值的星期几信息。根据表中每个观测值的时间,创建一个包含值 "pm" 或 "am" 的分类向量 y。将 ze 定义为东行交通流量数据的向量,将 zw 定义为西行交通流量数据的向量。
daynames = ["Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday"]; x = categorical(tbl.Day,daynames); ispm = tbl.Timestamp.Hour<12; y = categorical; y(ispm) = 'pm'; y(~ispm) = 'am'; ze = tbl.Eastbound; zw = tbl.Westbound;
创建一个采用 'flow' 图块排列方式的分块图布局,以便坐标区填充布局中的可用空间。调用 nexttile 函数创建一个坐标区对象,并返回它作为 ax1。然后通过将 ax1 传递给 swarmchart 函数,创建一个东行数据的群散点图。
tiledlayout('flow') ax1=nexttile; swarmchart3(ax1,x,y,ze,'.');

重复该过程,为西行交通流量创建另一个坐标区对象和群散点图。
ax2 = nexttile;
z = tbl.Westbound;
swarmchart3(ax2,x,y,zw,'.');
输入参数
x 坐标,指定为数值标量或与 y 和 z 大小相同的向量。
数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | categorical
y 坐标,指定为数值标量或与 x 和 z 大小相同的向量。
数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | categorical
z 坐标,指定为数值标量或与 x 和 y 大小相同的向量。
数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | datetime | duration
以磅为单位的标记大小,指定为下列形式之一:
数值标量 - 以相同的大小绘制所有标记。
行或列向量 - 使每个标记具有不同的大小。
sz的长度必须等于x、y和z的长度。[]- 使用 36 磅的默认大小。
标记颜色,指定为下列形式之一:
RGB 三元组或颜色名称 - 使用相同的颜色绘制所有标记。RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度必须处于范围
[0,1]中。您也可以指定下表中的颜色名称。由 RGB 三元组组成的三列矩阵 - 对每个标记使用不同的颜色。矩阵的每行为对应标记指定一种 RGB 三元组颜色。行数必须等于
x、y和z的长度。向量 - 每个标记使用不同颜色。
c中的值对当前颜色图进行索引,它们涵盖该颜色图的完整范围。c的长度必须等于x、y和z的长度。要更改颜色图,请使用colormap函数。
| 颜色名称 | 描述 | 对应的 RGB 三元组 |
|---|---|---|
'red' 或 'r' | 红色 | [1 0 0] |
'green' 或 'g' | 绿色 | [0 1 0] |
'blue' 或 'b' | 蓝色 | [0 0 1] |
'yellow' 或 'y' | 黄色 | [1 1 0] |
'magenta' 或 'm' | 品红色 | [1 0 1] |
'cyan' 或 'c' | 青色 | [0 1 1] |
'white' 或 'w' | 白色 | [1 1 1] |
'black' 或 'k' | 黑色 | [0 0 0] |
标记类型,指定为下表中列出的值之一。
| 标记 | 描述 | 生成的标记 |
|---|---|---|
"o" | 圆圈 |
|
"+" | 加号 |
|
"*" | 星号 |
|
"." | 点 |
|
"x" | 叉号 |
|
"_" | 水平线条 |
|
"|" | 垂直线条 |
|
"square" | 方形 |
|
"diamond" | 菱形 |
|
"^" | 上三角 |
|
"v" | 下三角 |
|
">" | 右三角 |
|
"<" | 左三角 |
|
"pentagram" | 五角形 |
|
"hexagram" | 六角形 |
|
用于填充标记内部的选项,指定为 'filled'。此选项和具有一个面的标记(例如,'o' 或 'square')一起使用。没有面而只包含边的标记根本无法呈现,如 '+'、'*'、'.' 和 'x'。
'filled' 选项将 Scatter 对象的 MarkerFaceColor 属性设置为 'flat',并将 MarkerEdgeColor 属性设置为 'none'。在这种情况下,MATLAB® 绘制标记面,但不绘制边。
包含要绘制的数据的源表,指定为表或时间表。
包含 x 坐标的表变量,指定为一个或多个表变量索引。
指定表索引
使用以下任一索引方案指定所需的一个或多个变量。
| 索引方案 | 示例 |
|---|---|
变量名称:
|
|
变量索引:
|
|
变量类型:
|
|
绘制您的数据
您指定的表变量可以包含数值、分类、日期时间或持续时间值。
要绘制一个数据集,请为 xvar 指定一个变量,为 yvar 指定一个变量,为 zvar 指定一个变量。例如,创建一个包含四个正态分布随机值变量的表。绘制 X、Y1 和 Z 变量。
tbl = table(randn(100,1),randn(100,1),randn(100,1)+5,randn(100,1), ... 'VariableNames',{'X','Y1','Y2','Z'}); swarmchart3(tbl,'X','Y1','Z')
要一起绘制多个数据集,请为 xvar、yvar 或 zvar 中的至少一个指定多个变量。如果为多个参量指定多个变量,则为每个参量指定的变量数目必须相同。
例如,在 x 轴上绘制 X 变量,在 y 轴上绘制 Y1 和 Y2 变量,在 z 轴上绘制 Z 变量。
swarmchart3(tbl,'X',{'Y1','Y2'},'Z')
您还可以对 xvar、yvar 和 zvar 使用不同索引方案。例如,将 xvar 指定为变量名称,将 yvar 指定为索引编号,将 zvar 指定为逻辑向量。
swarmchart3(tbl,'X',2,[false false true])包含 y 坐标的表变量,指定为一个或多个表变量索引。
指定表索引
使用以下任一索引方案指定所需的一个或多个变量。
| 索引方案 | 示例 |
|---|---|
变量名称:
|
|
变量索引:
|
|
变量类型:
|
|
绘制您的数据
您指定的表变量可以包含数值、分类、日期时间或持续时间值。
要绘制一个数据集,请为 xvar 指定一个变量,为 yvar 指定一个变量,为 zvar 指定一个变量。例如,创建一个包含四个正态分布随机值变量的表。绘制 X、Y1 和 Z 变量。
tbl = table(randn(100,1),randn(100,1),randn(100,1)+5,randn(100,1), ... 'VariableNames',{'X','Y1','Y2','Z'}); swarmchart3(tbl,'X','Y1','Z')
要一起绘制多个数据集,请为 xvar、yvar 或 zvar 中的至少一个指定多个变量。如果为多个参量指定多个变量,则为每个参量指定的变量数目必须相同。
例如,在 x 轴上绘制 X 变量,在 y 轴上绘制 Y1 和 Y2 变量,在 z 轴上绘制 Z 变量。
swarmchart3(tbl,'X',{'Y1','Y2'},'Z')
您还可以对 xvar、yvar 和 zvar 使用不同索引方案。例如,将 xvar 指定为变量名称,将 yvar 指定为索引编号,将 zvar 指定为逻辑向量。
swarmchart3(tbl,'X',2,[false false true])包含 z 坐标的表变量,指定为一个或多个表变量索引。
指定表索引
使用以下任一索引方案指定所需的一个或多个变量。
| 索引方案 | 示例 |
|---|---|
变量名称:
|
|
变量索引:
|
|
变量类型:
|
|
绘制您的数据
您指定的表变量可以包含数值、分类、日期时间或持续时间值。
要绘制一个数据集,请为 xvar 指定一个变量,为 yvar 指定一个变量,为 zvar 指定一个变量。例如,创建一个包含四个正态分布随机值变量的表。绘制 X、Y1 和 Z 变量。
tbl = table(randn(100,1),randn(100,1),randn(100,1)+5,randn(100,1), ... 'VariableNames',{'X','Y1','Y2','Z'}); swarmchart3(tbl,'X','Y1','Z')
要一起绘制多个数据集,请为 xvar、yvar 或 zvar 中的至少一个指定多个变量。如果为多个参量指定多个变量,则为每个参量指定的变量数目必须相同。
例如,在 x 轴上绘制 X 变量,在 y 轴上绘制 Y1 和 Y2 变量,在 z 轴上绘制 Z 变量。
swarmchart3(tbl,'X',{'Y1','Y2'},'Z')
您还可以对 xvar、yvar 和 zvar 使用不同索引方案。例如,将 xvar 指定为变量名称,将 yvar 指定为索引编号,将 zvar 指定为逻辑向量。
swarmchart3(tbl,'X',2,[false false true])目标坐标区,指定为 Axes 对象。如果未指定坐标区,则 MATLAB 将在当前坐标区中进行绘制;或如果不存在 Axes 对象,则创建一个对象。
名称-值参数
将可选参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。
如果使用的是 R2021a 之前的版本,请使用逗号分隔每个名称和值,并用引号将 Name 引起来。
示例: swarmchart3(randi(2,500,1),randi(2,500,1),randn(500,1),'MarkerFaceColor','red') 指定红色填充标记。
沿 x 维度的抖动类型(点的间距),指定为下列值之一:
'none'- 不抖动点。'density'- 使用二维图的 y 的核密度估计值对点进行抖动。如果在三维图的两个维度中指定此选项,则点会根据第三个维度中的核密度估计值抖动。例如,将XJitter和YJitter设置为'density'会使用 z 的核密度估计值。'rand'- 以均匀分布随机抖动点。'randn'- 以正态分布随机抖动点。
沿 x 维度的最大抖动量(点之间的偏移量),以数据单位指定为非负标量值。
例如,要将抖动宽度设置为邻点之间最短距离的 90%,请取 x 的唯一值之间的最小距离并按 0.9 进行缩放。
XJitterWidth = 0.9 * min(diff(unique(x)));
沿 y 维度的抖动类型(点的间距),指定为下列值之一:
'none'- 不抖动点。'density'- 使用二维图的 x 的核密度估计值对点进行抖动。如果在三维图的两个维度中指定此选项,则点会根据第三个维度中的核密度估计值抖动。例如,将XJitter和YJitter设置为'density'会使用 z 的核密度估计值。'rand'- 以均匀分布随机抖动点。'randn'- 以正态分布随机抖动点。
沿 y 维度的最大抖动量(点之间的偏移量),以数据单位指定为非负标量值。
例如,要将抖动宽度设置为邻点之间最短距离的 90%,请取 y 的唯一值之间的最小距离并按 0.9 进行缩放。
YJitterWidth = 0.9 * min(diff(unique(y)));
包含颜色数据的表变量,指定为源表的变量索引。
指定表索引
使用以下任一索引方案指定所需的变量。
| 索引方案 | 示例 |
|---|---|
变量名称:
|
|
变量索引:
|
|
变量类型:
|
|
指定颜色数据
指定 ColorVariable 属性控制标记的颜色。当 MarkerFaceColor 属性设置为 "flat" 时,变量中的数据控制标记填充颜色。当 MarkerEdgeColor 设置为 "flat" 时,数据还可以控制标记轮廓颜色。
您指定的表变量可以包含任何数值类型的值。这些值可以是以下形式之一:
线性映射到当前颜色图中的一列数字。
由 RGB 三元组组成的一个三列数组。RGB 三元组是包含三个元素的向量,其元素值指定特定颜色的红、绿和蓝分量的强度。强度必须处于范围
[0,1]中。例如,[0.5 0.7 1]指定浅蓝色。
当您设置 ColorVariable 属性时,MATLAB 会更新 CData 属性。
算法
群散点图中的点使用均匀随机值进行抖动,这些值由 z 的高斯核密度估计值和每个 (x, y) 位置处的相对点数进行加权。当您调用 swarmchart3 函数时,此行为对应于 Scatter 对象的 XJitter 和 YJitter 属性的默认 'density' 设置。
默认情况下,每个 x 位置处的点的最大散布是相邻点之间最小距离的 90%。例如,在 x 维度中,散布的计算如下:
spread = 0.9 * min(diff(unique(x)));
您可以通过设置 Scatter 对象的 XJitterWidth 和 YJitterWidth 属性来控制偏移量。
版本历史记录
在 R2020b 中推出当您将表和一个或多个变量名称传递给 swarmchart3 函数时,轴和图例标签现在会显示表变量名称中包含的任何特殊字符,如下划线。以前,特殊字符会被解释为 TeX 或 LaTeX 字符。
例如,如果将包含名为 Sample_Number 的变量的表传递给 swarmchart3 函数,则下划线会出现在轴和图例标签中。在 R2022a 及更早版本中,下划线解释为下标。
| 版本 | 表变量 "Sample_Number" 的标签 |
|---|---|
R2022b |
|
R2022a |
|
要显示具有 TeX 或 LaTeX 格式的轴和图例标签,请手动指定标签。例如,在绘制后,使用所需的标签字符串调用 xlabel 或 legend 函数。
xlabel("Sample_Number") legend(["Sample_Number" "Another_Legend_Label"])
通过将表传递给 swarmchart3 函数并后跟要绘制的变量来创建图。当您将数据指定为表时,会自动使用表变量名称对轴标签和图例(如果有)进行标注。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- 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)
















