MATLAB中scatter函数用法

目录

语法

说明

​示例


        scatter函数的功能是绘制散点图。

语法

scatter(x,y)
scatter(x,y,sz)
scatter(x,y,sz,c)
scatter(___,"filled")
scatter(___,mkr)
scatter(tbl,xvar,yvar)
scatter(tbl,xvar,yvar,"filled")
scatter(ax,___)
scatter(___,Name,Value)
s = scatter(___)

说明

向量和矩阵数据

​scatter(x,y) 在向量 x 和 y 指定的位置创建一个包含圆形标记的散点图。

  • 要绘制一组坐标,请将 x 和 y 指定为等长向量。

  • 要在同一组坐标区上绘制多组坐标,请将 x 或 y 中的至少一个指定为矩阵。

        ​scatter(x,y,sz) 指定圆圈大小。要对所有圆使用相同的大小,请将 sz 指定为标量。要绘制不同大小的每个圆,请将 sz 指定为向量或矩阵。

        ​scatter(x,y,sz,c) 指定圆颜色。您可以为所有圆指定一种颜色,也可以更改颜色。例如,您可以通过将 c 指定为 "red" 来绘制所有红色圆。

        scatter(___,"filled") 填充圆。可以将 "filled" 选项与前面语法中的任何输入参数组合一起使用。

        scatter(___,mkr) 指定标记类型。

表数据

        scatter(tbl,xvar,yvar) 绘制表 tbl 中的变量 xvar 和 yvar。要绘制一个数据集,请为 xvar 指定一个变量,为 yvar 指定一个变量。要绘制多个数据集,请为 xvar、yvar 或两者指定多个变量。如果两个参数都指定多个变量,它们指定的变量数目必须相同。(自 R2021b 开始提供)

        scatter(tbl,xvar,yvar,"filled") 用实心圆绘制表中的指定变量。(自 R2021b 开始提供)

其他选项

        ​scatter(ax,___) 将在 ax 指定的坐标区中,而不是在当前坐标区中绘制图形。选项 ax 可以位于前面的语法中的任何输入参数组合之前。

        ​scatter(___,Name,Value) 通过使用一个或多个名称-值参数设置属性来修改散点图。例如:​

  • scatter(x,y,"LineWidth",2) 创建一个标记轮廓为两磅的散点图。

  • scatter(tbl,"MyX","MyY","ColorVariable","MyColors") 根据表中的数据创建一个散点图,并使用表中的数据自定义标记颜色。

        ​s= scatter(___) 返回 Scatter 对象或 Scatter 对象数组。在创建绘图后,使用 s 设置属性。

​示例

创建散点图

        创建 x 为 0 和 3π 之间的 200 个等间距值。创建 y 为带随机干扰的余弦值。然后,创建一个散点图。

x = linspace(0,3*pi,200);
y = cos(x) + rand(1,200);  
scatter(x,y)

如图所示:

改变圆圈大小

        使用大小不同的圆圈创建一个散点图。以平方磅为单位指定大小

x = linspace(0,3*pi,200);
y = cos(x) + rand(1,200);
sz = linspace(1,100,200);
scatter(x,y,sz)

如图所示:

         x、y 和 sz 中的相应元素确定每个圆圈的位置和大小。要按照相同的面积绘制所有圆圈,请将 sz 指定为数值标量。

改变圆圈颜色

        创建一个散点图并改变圆圈的颜色。

x = linspace(0,3*pi,200);
y = cos(x) + rand(1,200);
c = linspace(1,10,length(x));
scatter(x,y,[],c)

如图所示:

         x、y 和 c 中的相应元素确定每个圆形的位置和颜色。scatter 函数将 c 中的元素映射到当前颜色图中的元素。

填充标记

        创建一个散点图并填充标记。scatter 使用标记边的颜色填充每个标记。        

x = linspace(0,3*pi,200);
y = cos(x) + rand(1,200);
sz = 25;
c = linspace(1,10,length(x));
scatter(x,y,sz,c,'filled')

如图所示:

指定标记符号 

        创建向量 x 和 y,作为带随机干扰的正弦和余弦值。然后,创建一个散点图,并使用面积为 140 平方磅的菱形标记。

theta = linspace(0,2*pi,150);
x = sin(theta) + 0.75*rand(1,150);
y = cos(theta) + 0.75*rand(1,150);  
sz = 140;
scatter(x,y,sz,'d')

如图所示:

更改标记颜色和线条宽度 

        创建向量 x 和 y,作为带随机干扰的正弦和余弦值。创建一个散点图并设置标记边颜色、标记面颜色和线条宽度。

theta = linspace(0,2*pi,300);
x = sin(theta) + 0.75*rand(1,300);
y = cos(theta) + 0.75*rand(1,300);  
sz = 40;
scatter(x,y,sz,'MarkerEdgeColor',[0 .5 .5],...
              'MarkerFaceColor',[0 .7 .7],...
              'LineWidth',1.5)

如图所示:

改变整个数据点范围内的透明度

        通过将 AlphaData 属性设置为不同不透明度值的向量,可以改变各散点的透明度。要确保散点图使用 AlphaData 值,请将 MarkerFaceAlpha 属性设置为 'flat'

        创建一组正态分布的随机数。然后用填充的标记创建数据的散点图。

x = randn(1000,1);
y = randn(1000,1);
s = scatter(x,y,'filled');

 如图所示:

根据与零的距离设置每个点的不透明度。

distfromzero = sqrt(x.^2 + y.^2);
s.AlphaData = distfromzero;
s.MarkerFaceAlpha = 'flat';

如图所示:

绘制表中的数据

自 R2021b 开始提供

        绘制表中数据的一种便捷方法是将表传递给 scatter 函数,并指定要绘制的变量。例如,将 patients.xls 以表 tbl 形式读取。通过将 tbl 作为第一个参数传递给 scatter 函数,后跟变量名称,绘制 Systolic 和 Diastolic 变量之间的关系。请注意,轴标签与变量名称匹配。

tbl = readtable('patients.xls');
scatter(tbl,'Systolic','Diastolic');

 如图所示:

         也可以同时绘制多个变量。例如,通过将 yvar 参数指定为元胞数组 {'Systolic','Diastolic'},绘制两个血压变量对 Weight 变量的图。添加图例,注意图例标签与变量名称匹配。

scatter(tbl,'Weight',{'Systolic','Diastolic'});
legend

如图所示:

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

自 R2021b 开始提供

        绘制表中数据并自定义颜色和标记大小的一种方法是设置 ColorVariable 和 SizeData 属性。您可以在调用 scatter 函数时将这些属性设置为名称-值参数,也可以稍后在 Scatter 对象上设置它们。

        例如,将 patients.xls 以表 tbl 形式读取。用填充标记绘制 Height 变量对 Weight 变量的图。通过指定 ColorVariable 名称-值参数来更改标记颜色。将 Scatter 对象返回为 s,以便以后可以设置其他属性。

tbl = readtable('patients.xls');
s = scatter(tbl,'Weight','Height','filled','ColorVariable','Diastolic');

如图所示:

        通过设置 SizeData 属性,将标记大小更改为 100 磅。然后添加颜色栏。 

s.SizeData = 100;
colorbar

如图所示:

指定目标坐标区和标记类型

自 R2019b 开始提供

        可以使用 tiledlayout 和 nexttile 函数显示分块图。调用 tiledlayout 函数以创建一个 2×1 分块图布局。调用 nexttile 函数以创建坐标区对象 ax1 和 ax2。将在每个坐标区中绘制散点数据。在底部散点图中,指定使用实心菱形标记。

x = linspace(0,3*pi,200);
y = cos(x) + rand(1,200);
tiledlayout(2,1)

% Top plot
ax1 = nexttile;
scatter(ax1,x,y)

% Bottom plot
ax2 = nexttile;
scatter(ax2,x,y,'filled','d')

 如图所示:

创建并修改散点序列

        创建一个散点图并返回散点序列对象 s。

theta = linspace(0,1,500);
x = exp(theta).*sin(100*theta);
y = exp(theta).*cos(100*theta);
s = scatter(x,y);

如图所示:

        在创建散点序列后,使用 s 查询并设置其属性。将线宽设置为 0.6 磅。将标记边颜色设置为蓝色。使用 RGB 三元组颜色设置标记面。 

s.LineWidth = 0.6;
s.MarkerEdgeColor = 'b';
s.MarkerFaceColor = [0 0.5 0.5];

如图所示:

在 R2006a 之前推出

        R2022b: 用表创建的绘图将保留轴和图例标签中的特殊字符

        R2021b: 将表直接传递给 scatter

猜你喜欢

转载自blog.csdn.net/jk_101/article/details/131478502