目录
语法
说明
向量和矩阵数据
表数据
其他选项
示例
创建三维散点图
改变标记大小
改变标记颜色
填充标记
设置标记类型
设置标记属性
绘制表中的数据
使用自定义标记大小和颜色绘制表数据
指定三维散点图的坐标区
使用句柄设置散点序列属性
scatter3函数的功能是绘制三维散点图。
语法
scatter3(X,Y,Z)
scatter3(X,Y,Z,S)
scatter3(X,Y,Z,S,C)
scatter3(___,'filled')
scatter3(___,markertype)
scatter3(tbl,xvar,yvar,zvar)
scatter3(tbl,xvar,yvar,zvar,'filled')
scatter3(ax,___)
scatter3(___,Name,Value)
h = scatter3(___)
说明
向量和矩阵数据
scatter3(X,Y,Z) 在 X、Y 和 Z 指定的位置显示圆圈。
-
要绘制一组坐标,请将 X、Y 和 Z 指定为等长向量。
-
要在同一组坐标轴上绘制多组坐标,请将 X、Y 或 Z 中的至少一个指定为矩阵。(自 R2022a 开始提供)
scatter3(X,Y,Z,S) 指定圆圈大小。
-
要更改圆圈的大小,请将 S 指定为向量。
-
要跨多组坐标指定不同的圆圈大小,请指定一个矩阵。(自 R2022a 开始提供)
scatter3(X,Y,Z,S,C) 指定圆颜色。您可以为所有圆指定一种颜色,也可以更改颜色。例如,您可以通过将 C 指定为 "red" 来绘制所有红色圆。
scatter3(___,'filled') 使用上述语法中的任何输入参数组合填充这些圆。
scatter3(___,markertype) 指定标记类型。
表数据
scatter3(tbl,xvar,yvar,zvar) 绘制表 tbl 中的变量 xvar、yvar 和 zvar。要绘制一个数据集,请为 xvar、yvar 和 zvar 各指定一个变量。要绘制多个数据集,请为其中至少一个参数指定多个变量。对于指定多个变量的参数,指定的变量数目必须相同。(自 R2021b 开始提供)
scatter3(tbl,xvar,yvar,zvar,'filled') 用实心圆绘制表中的指定变量。(自 R2021b 开始提供)
其他选项
scatter3(ax,___) 将图形绘制到 ax 指定的坐标区中,而不是当前坐标区 (gca) 中。选项 ax 可以位于上述语法中的任何输入参数组合之前。
scatter3(___,Name,Value) 通过使用一个或多个名称-值参数设置属性来修改散点图。例如:
-
scatter3(x,y,z,'LineWidth',2) 创建一个标记轮廓为两磅的散点图。
-
scatter3(tbl,'MyX','MyY','MyZ','ColorVariable','MyColors') 根据表中的数据创建一个散点图,并使用表中的数据自定义标记颜色。
h = scatter3(___) 返回 Scatter 对象。在创建散点图后,可使用 h 修改其属性。
示例
创建三维散点图
创建三维散点图。使用 sphere 定义向量 x、y 和 z。
figure
[X,Y,Z] = sphere(16);
x = [0.5*X(:); 0.75*X(:); X(:)];
y = [0.5*Y(:); 0.75*Y(:); Y(:)];
z = [0.5*Z(:); 0.75*Z(:); Z(:)];
scatter3(x,y,z)
如图所示:
改变标记大小
使用 sphere 定义向量 x、y 和 z。
[X,Y,Z] = sphere(16);
x = [0.5*X(:); 0.75*X(:); X(:)];
y = [0.5*Y(:); 0.75*Y(:); Y(:)];
z = [0.5*Z(:); 0.75*Z(:); Z(:)];
定义向量 s 可指定标记大小。
S = repmat([100,50,5],numel(X),1);
s = S(:);
创建一个三维散点图并使用 view 更改图窗中坐标区的角度。
figure
scatter3(x,y,z,s)
view(40,35)
如图所示:
x、y、z 和 s 中的相应项确定每个标记的位置和大小。
改变标记颜色
使用 sphere 定义向量 x、y 和 z。
[X,Y,Z] = sphere(16);
x = [0.5*X(:); 0.75*X(:); X(:)];
y = [0.5*Y(:); 0.75*Y(:); Y(:)];
z = [0.5*Z(:); 0.75*Z(:); Z(:)];
定义向量 s 和 c 以指定每个标记的大小和颜色。
S = repmat([50,25,10],numel(X),1);
C = repmat([1,2,3],numel(X),1);
s = S(:);
c = C(:);
创建一个三维散点图并使用 view 更改图窗中坐标区的角度。
figure
scatter3(x,y,z,s,c)
view(40,35)
如图所示:
x、y、z 和 c 中的相应项确定每个标记的位置和颜色。
填充标记
将向量 x 和 y 创建为带随机干扰的余弦和正弦值。
z = linspace(0,4*pi,250);
x = 2*cos(z) + rand(1,250);
y = 2*sin(z) + rand(1,250);
创建一个三维散点图并填充标记。使用 view 可更改图窗中坐标区的角度。
scatter3(x,y,z,'filled')
view(-30,10)
如图所示:
设置标记类型
初始化随机数生成器以使 rand 的输出可重复。将向量 x 和 y 定义为带随机干扰的余弦和正弦值。
rng default
z = linspace(0,4*pi,250);
x = 2*cos(z) + rand(1,250);
y = 2*sin(z) + rand(1,250);
创建一个三维散点图并设置标记类型。使用 view 可更改图窗中坐标区的角度。
figure
scatter3(x,y,z,'*')
view(-30,10)
如图所示:
设置标记属性
初始化随机数生成器以使 rand 的输出可重复。将向量 x 和 y 定义为带随机干扰的余弦和正弦值。
rng default
z = linspace(0,4*pi,250);
x = 2*cos(z) + rand(1,250);
y = 2*sin(z) + rand(1,250);
创建一个三维散点图并设置标记边颜色和标记面颜色。使用 view 可更改图窗中坐标区的角度。
figure
scatter3(x,y,z,...
'MarkerEdgeColor','k',...
'MarkerFaceColor',[0 .75 .75])
view(-30,10)
如图所示:
绘制表中的数据
自 R2021b 开始提供
绘制表中数据的一种便捷方法是将表传递给 scatter3 函数,并指定要绘制的变量。例如,将 patients.xls 以表 tbl 形式读取。通过将 tbl 作为第一个参数传递给 scatter3 函数,后跟变量名称,绘制 Systolic、Diastolic 和 Weight 变量之间的关系。默认情况下,轴标签与变量名称匹配。
tbl = readtable('patients.xls');
scatter3(tbl,'Systolic','Diastolic','Weight');
如图所示:
也可以同时绘制多个变量。例如,通过将 xvar 参数指定为元胞数组 {'Systolic','Diastolic'},在同一 x 轴上绘制两个血压变量。然后,添加一个图例。图例标签与变量名称匹配。
scatter3(tbl,{'Systolic','Diastolic'},'Age','Weight');
legend
如图所示:
使用自定义标记大小和颜色绘制表数据
自 R2021b 开始提供
绘制表中数据并自定义颜色和标记大小的一种方法是设置 ColorVariable 和 SizeData 属性。您可以在调用 scatter3 函数时将这些属性设置为名称-值参数,也可以稍后在 Scatter 对象上设置它们。
例如,将 patients.xls 以表 tbl 形式读取。用填充标记绘制 Systolic、Diastolic 和 Weight 变量之间的关系。通过指定 ColorVariable 名称-值参数来更改标记颜色。将 Scatter 对象返回为 s,以便以后可以设置其他属性。
tbl = readtable('patients.xls');
s = scatter3(tbl,'Systolic','Diastolic','Weight','filled', ...
'ColorVariable','Diastolic');
如图所示:
通过设置 SizeData 属性,将标记大小更改为 100 磅。然后添加颜色栏。
s.SizeData = 100;
colorbar
如图所示:
指定三维散点图的坐标区
自 R2019b 开始提供
可以使用 tiledlayout 和 nexttile 函数显示分块图。
加载 seamount 数据集以获取向量 x、y 和 z。调用 tiledlayout 函数以创建一个 2×1 分块图布局。调用 nexttile 函数以创建坐标区对象 ax1 和 ax2。然后通过将坐标区对象指定为 scatter3 的第一个参数,在坐标区中创建单独的散点图。
load seamount
tiledlayout(2,1)
ax1 = nexttile;
ax2 = nexttile;
scatter3(ax1,x,y,z,'MarkerFaceColor',[0 .75 .75])
scatter3(ax2,x,y,z,'*')
如图所示:
使用句柄设置散点序列属性
使用 sphere 函数创建向量 x、y 和 z。
[X,Y,Z] = sphere(16);
x = [0.5*X(:); 0.75*X(:); X(:)];
y = [0.5*Y(:); 0.75*Y(:); Y(:)];
z = [0.5*Z(:); 0.75*Z(:); Z(:)];
创建向量 s 和 c 以指定每个标记的大小和颜色。
S = repmat([70,50,20],numel(X),1);
C = repmat([1,2,3],numel(X),1);
s = S(:);
c = C(:);
创建一个三维散点图并返回散点序列对象。
h = scatter3(x,y,z,s,c);
如图所示:
使用 RGB 三元组颜色值设置标记面颜色。使用圆点表示法设置属性。
h.MarkerFaceColor = [0 0.5 0.5];
如图所示: