MATLAB swarmchart3():绘制三维分簇散点图(非常详细)
三维分簇散点图有助于可视化离散的 x、y 数据及 z 数据的分布。在每个 (x, y) 位置,点根据 z 的核密度估计值发生抖动。
在 MATLAB 中,利用函数 swarmchart3() 可以创建三维分簇散点图,其调用格式如下:
1) 向量数据:
【实例 1】创建三维分簇散点图(向量数据)。在编辑器中编写以下程序并运行:

图 1 三维分簇散点图(1)
【实例 2】利用 BicycleCounts.csv 数据集创建三维分簇散点图。数据集包含一段时间内的自行车交通流量数据。在编辑器中编写以下程序并运行:

图 2 三维分簇散点图(2)
在 MATLAB 中,利用函数 swarmchart3() 可以创建三维分簇散点图,其调用格式如下:
1) 向量数据:
swarmchart3(x,y,z) % 创建三维分簇散点图,点在 x 和 y 维度中发生偏移(抖动) swarmchart3(x,y,z,sz) % 指定标记大小。先将 sz 指定为标量,则以相同的大小绘制所有标记 % 先将 sz 指定为与 x、y 和 z 大小相同的向量,则绘制不同大小的标记 swarmchart3(x,y,z,sz,c) % 指定标记的颜色 % 先将 c 指定为颜色名称或 RGB 三元组,则以相同的颜色绘制所有标记 % 先将 c 指定为与 x、y 和 z 大小相同的向量,则为每个标记指定一种不同的颜色 swarmchart3(___,mkr) % 指定不同于默认标记(圆形)的标记 swarmchart3(___,'filled') % 填充标记2) 表数据:
swarmchart3(tbl,xvar,yvar,zvar) % 绘制表 tbl 中的变量 xvar、yvar 和 zvar % 先为 xvar、yvar 和 zvar 分别指定一个变量,则绘制一个数据集 % 先为其中至少一个参数指定多个变量,则绘制多个数据集 swarmchart3(tbl,xvar,yvar,zvar,'filled') % 用实心圆绘制表中的指定变量
【实例 1】创建三维分簇散点图(向量数据)。在编辑器中编写以下程序并运行:
subplot(1,2,1) % 改变标记的颜色 x=[zeros(1,500) ones(1,500)]; % 创建包含 0 和 1 的组合的向量 x y=randi(4,1,1000); % 创建包含 1 和 2 的随机组合的向量 y z=randn(1,1000).^2; % 创建随机数平方向量 z c=sqrt(z); % 计算向量 z 的平方根,指定标记的颜色 swarmchart3(x,y,z,10,c,'filled'); % 改变标记的颜色 subplot(1,2,2) % 更改抖动类型和宽度 s=swarmchart3(x,y,z); s.XJitter='rand'; % 指定均匀随机抖动 s.XJitterWidth=0.5; % 将抖动宽度更改为 0.5 个数据单位 s.YJitter='randn'; % 指定正态随机抖动 s.YJitterWidth=0.1; % 将抖动宽度更改为 0.1 个数据单位运行程序后,输出如下图所示图形:

图 1 三维分簇散点图(1)
【实例 2】利用 BicycleCounts.csv 数据集创建三维分簇散点图。数据集包含一段时间内的自行车交通流量数据。在编辑器中编写以下程序并运行:
tbl=readtable(fullfile(matlabroot,'examples','matlab','data','BicycleCounts.csv')); % 将数据集读入名为 tbl 的时间表中 tbl(1:5,:) % 显示 tbl 的前五行,输出略 daynames=["Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday"]; % 向量 x 包含每个观测值的星期几信息 x=categorical(tbl.Day,daynames); ispm=tbl.Timestamp.Hour < 12; y=categorical; % 根据观测值的时间创建一个包含值"pm"或"am"的分类向量 y y(ispm)="pm"; y(~ispm)="am"; z=tbl.Eastbound; % 创建东行交通数据的向量 z swarmchart3(x,y,z,2); % 创建分簇散点图,显示一周中每个白天和晚上的数据分布运行程序后,输出如下图所示图形:

图 2 三维分簇散点图(2)