目录

语法

说明

向量和矩阵数据

表数据

其他选项

示例

创建三维散点图

改变标记大小

改变标记颜色

填充标记

设置标记类型

设置标记属性

绘制表中的数据

使用自定义标记大小和颜色绘制表数据

指定三维散点图的坐标区

使用句柄设置散点序列属性


        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];

如图所示:

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐