MATLAB 中的散点图

Ammar Ali 2024年2月15日
MATLAB 中的散点图

本教程将讨论使用 MATLAB 中的 scatter() 函数创建散点图。

使用 MATLAB 中的 scatter() 函数创建散点图

scatter(x,y) 函数在输入向量 x 和 y 指定的位置上创建散点图。默认情况下,scatter() 函数使用圆形标记来绘制给定的数据。例如,让我们使用 scatter() 函数来创建给定数据的散点图。请参阅下面的代码。

clc
x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);  
scatter(x,y)

输出:

散点图

存储在变量 x 和 y 中的数据用于在输出中创建散点图。确保变量 x 和 y 的长度应该相同。否则,MATLAB 将显示错误。默认情况下,scatter() 函数使用圆圈大小和颜色的默认值,但我们可以更改函数的默认属性。例如,要更改圆圈的大小,我们必须将圆圈的大小定义为 scatter() 函数内的第三个参数。例如,让我们更改上图中圆圈的大小。请参阅下面的代码。

clc
x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);  
scatter(x,y,10)

输出:

更改散点图中圆圈的大小

上面输出中圆圈的大小与之前散点图中圆圈的大小不同。大小应为正数值或与输入向量 x 和 y 大小相同的向量。如果大小是单个正数值,就像上面的代码一样,它将应用于散点图中存在的所有圆圈。我们还可以使用与输入向量 x 和 y 长度相同的向量为每个圆赋予不同的大小值。例如,让我们改变上面散点图中每个圆圈的大小。请参阅下面的代码。

clc
x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);
CSize = 1:100;
scatter(x,y,CSize)

输出:

具有不同圆圈大小的散点图

在上面的输出中,每个圆圈都有不同的大小。我们还可以通过在 scatter() 函数中将其作为第四个参数传递来更改散点图中圆圈的颜色。例如,让我们将上面散点图中圆圈的颜色更改为黑色。请参阅下面的代码。

clc
x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);
CSize = 1:100;
scatter(x,y,CSize,[0 0 0])

输出:

更改散点图中圆圈的颜色

在上面的散点图中,圆圈的颜色是黑色,但我们可以通过在 scatter() 函数中输入该颜色的 RGB 值作为第四个参数来赋予它任何颜色。我们还可以通过在 scatter() 函数中将颜色名称作为字符串传递来更改颜色。如果我们只定义一个颜色值,它将应用于散点图中存在的所有圆圈。我们还可以通过使用与输入向量 x 和 y 大小相同的矩阵为每个圆赋予不同的颜色。矩阵可以包含正数值或 RGB 三元组颜色。例如,让我们改变上面散点图中每个圆圈的颜色。请参阅下面的代码。

clc
x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);
CSize = 1:100;
CColor = 100:-1:1;
scatter(x,y,CSize,CColor)
colorbar

输出:

具有不同圆圈颜色的散点图

colorbar 命令在上面的代码中用于在散点图中绘制颜色条。我们可以从颜色条中看出,低值属于较冷的颜色,高值属于较热的颜色。在此示例中,我们使用了具有正数值的向量,但我们也可以使用具有 RGB 三元组值的矩阵。上面散点图中的圆圈是空心的,但我们也可以使用 scatter() 函数内的 filled 属性来填充它们。例如,让我们填充上面散点图中的圆圈。请参阅下面的代码。

clc
x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);
CSize = 1:100;
CColor = 100:-1:1;
scatter(x,y,CSize,CColor,'filled')
colorbar

输出:

在散点图中填充圆圈

在输出中,填充了每种颜色。我们还可以更改散点图中的标记符号。默认情况下,scatter() 函数使用圆圈作为标记,但我们可以通过传递一个包含标记符号的字符串来更改它,例如 d 代表菱形,p 代表五角星,h 代表六角星,等等。例如,让我们将上面散点图中的标记符号从圆形更改为五角星形。请参阅下面的代码。

clc
x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);
CSize = 1:100;
CColor = 100:-1:1;
scatter(x,y,CSize,CColor,'p')

输出:

更改散点图中的标记符号

在输出中,标记符号更改为五角星形。我们还可以使用 scatter() 函数中的 MarkerFaceAlpha 属性更改标记的透明度。我们可以将透明度值从 0 更改为 1。例如,我们将上面散点图的透明度更改为 0.5。请参阅下面的代码。

clc
x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);
CSize = 1:100;
CColor = 100:-1:1;
scatter(x,y,CSize,CColor,'filled','MarkerFaceAlpha',0.5)

输出:

更改散点图中的标记透明度

在输出中,标记具有相同的边缘和面颜色,但我们可以为标记赋予不同的边缘和面颜色。要更改标记的边缘颜色,我们可以使用 scatter() 图中的 MarkerEdgeColor 属性。要更改标记的面部颜色,我们可以使用 MarkerFaceColor 属性。颜色值可以是任何 RGB 三元组或包含颜色名称的字符串。我们还可以使用 LineWidth 属性更改标记边缘的线宽。例如,让我们更改上面散点图中标记的边缘颜色、面颜色和线宽。请参阅下面的代码。

clc
x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);
CSize = 1:100;
scatter(x,y,CSize,'MarkerFaceColor','yellow','MarkerEdgeColor','black','LineWidth',1.5)

输出:

更改散点图中的标记面和边缘颜色

在输出中,标记面颜色为黄色,边缘颜色为黑色。如果我们想创建一个 3D 散点图,我们可以使用 scatter3() 函数。此函数与 scatter() 函数相同,不同之处在于它在 3D 平面中绘制给定数据。我们可以为 scatter3() 函数提供两个或三个输入向量。在三个输入的情况下,第一个向量包含 x 坐标,第二个包含 y 坐标,第三个包含 z 坐标。在两个输入向量的情况下,第三个坐标 z 将从前两个坐标的索引中获取。例如,让我们使用 scatter3() 函数在 3D 位置绘制上述散点图。请参阅下面的代码。

clc
x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);
z = 1:100;
scatter3(x,y,z)

输出:

3D 平面中的散点图

我们还可以像更改 scatter() 函数一样更改 scatter3() 函数属性。

作者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

相关文章 - MATLAB Plot