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
— x 坐标
标量 | 向量
x 坐标,指定为数值标量或与 y
和 z
大小相同的向量。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| categorical
y
— y 坐标
标量 | 向量
y 坐标,指定为数值标量或与 x
和 z
大小相同的向量。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| categorical
z
— z 坐标
标量 | 向量
z 坐标,指定为数值标量或与 x
和 y
大小相同的向量。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| datetime
| duration
sz
— 标记大小
36 (默认) | 数值标量 | 行或列向量 | []
以磅为单位的标记大小,指定为下列形式之一:
数值标量 - 以相同的大小绘制所有标记。
行或列向量 - 使每个标记具有不同的大小。
sz
的长度必须等于x
、y
和z
的长度。[]
- 使用 36 磅的默认大小。
c
— 标记颜色
[0 0.4470 0.7410]
(默认) | RGB 三元组 | 由 RGB 三元组组成的三列矩阵 | 向量 | 'r'
| 'g'
| 'b'
| ...
标记颜色,指定为下列形式之一:
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] |
mkr
— 标记类型
'o'
(默认) | '+'
| '*'
| '.'
| 'x'
| ...
标记类型,指定为下表中列出的值之一。
标记 | 描述 | 生成的标记 |
---|---|---|
"o" | 圆圈 |
|
"+" | 加号 |
|
"*" | 星号 |
|
"." | 点 |
|
"x" | 叉号 |
|
"_" | 水平线条 |
|
"|" | 垂直线条 |
|
"square" | 方形 |
|
"diamond" | 菱形 |
|
"^" | 上三角 |
|
"v" | 下三角 |
|
">" | 右三角 |
|
"<" | 左三角 |
|
"pentagram" | 五角形 |
|
"hexagram" | 六角形 |
|
'filled'
— 用于填充标记内部的选项
'filled'
用于填充标记内部的选项,指定为 'filled'
。此选项和具有一个面的标记(例如,'o'
或 'square'
)一起使用。没有面而只包含边的标记根本无法呈现,如 '+'
、'*'
、'.'
和 'x'
。
'filled'
选项将 Scatter
对象的 MarkerFaceColor
属性设置为 'flat'
,并将 MarkerEdgeColor
属性设置为 'none'
。在这种情况下,MATLAB® 绘制标记面,但不绘制边。
tbl
— 源表
表 | 时间表
包含要绘制的数据的源表,指定为表或时间表。
xvar
— 包含 x 坐标的表变量
一个或多个表变量索引
包含 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])
yvar
— 包含 y 坐标的表变量
一个或多个表变量索引
包含 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])
zvar
— 包含 z 坐标的表变量
一个或多个表变量索引
包含 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])
ax
— 目标坐标区
Axes
对象
目标坐标区,指定为 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')
指定红色填充标记。
XJitter
— x 维度的抖动类型
'none'
| 'density'
| 'rand'
| 'randn'
沿 x 维度的抖动类型(点的间距),指定为下列值之一:
'none'
- 不抖动点。'density'
- 使用二维图的 y 的内核密度估计值对点进行抖动。如果在三维图的两个维度中指定此选项,则点会根据第三个维度中的内核密度估计值抖动。例如,将XJitter
和YJitter
设置为'density'
会使用 z 的内核密度估计值。'rand'
- 以均匀分布随机抖动点。'randn'
- 以正态分布随机抖动点。
XJitterWidth
— 沿 x 维度的最大抖动
非负标量
沿 x 维度的最大抖动量(点之间的偏移量),以数据单位指定为非负标量值。
例如,要将抖动宽度设置为邻点之间最短距离的 90%,请取 x
的唯一值之间的最小距离并按 0.9
进行缩放。
XJitterWidth = 0.9 * min(diff(unique(x)));
YJitter
— y 维度的抖动类型
'none'
| 'density'
| 'rand'
| 'randn'
沿 y 维度的抖动类型(点的间距),指定为下列值之一:
'none'
- 不抖动点。'density'
- 使用二维图的 x 的内核密度估计值对点进行抖动。如果在三维图的两个维度中指定此选项,则点会根据第三个维度中的内核密度估计值抖动。例如,将XJitter
和YJitter
设置为'density'
会使用 z 的内核密度估计值。'rand'
- 以均匀分布随机抖动点。'randn'
- 以正态分布随机抖动点。
YJitterWidth
— 沿 y 维度的最大抖动
非负标量
沿 y 维度的最大抖动量(点之间的偏移量),以数据单位指定为非负标量值。
例如,要将抖动宽度设置为邻点之间最短距离的 90%,请取 y
的唯一值之间的最小距离并按 0.9
进行缩放。
YJitterWidth = 0.9 * min(diff(unique(y)));
ColorVariable
— 包含颜色数据的表变量
表变量索引
包含颜色数据的表变量,指定为源表的变量索引。
指定表索引
使用以下任一索引方案指定所需的变量。
索引方案 | 示例 |
---|---|
变量名称:
|
|
变量索引:
|
|
变量类型:
|
|
指定颜色数据
指定 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 中推出R2022b: 用表创建的绘图将保留轴和图例标签中的特殊字符
当您将表和一个或多个变量名称传递给 swarmchart3
函数时,轴和图例标签现在会显示表变量名称中包含的任何特殊字符,如下划线。以前,特殊字符会被解释为 TeX 或 LaTeX 字符。
例如,如果将包含名为 Sample_Number
的变量的表传递给 swarmchart3
函数,则下划线会出现在轴和图例标签中。在 R2022a 及更早版本中,下划线解释为下标。
版本 | 表变量 "Sample_Number" 的标签 |
---|---|
R2022b |
|
R2022a |
|
要显示具有 TeX 或 LaTeX 格式的轴和图例标签,请手动指定标签。例如,在绘制后,使用所需的标签字符串调用 xlabel
或 legend
函数。
xlabel("Sample_Number") legend(["Sample_Number" "Another_Legend_Label"])
R2021b: 将表直接传递给 swarmchart3
通过将表传递给 swarmchart3
函数并后跟要绘制的变量来创建图。当您将数据指定为表时,会自动使用表变量名称对轴标签和图例(如果有)进行标注。
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)