MATLAB 中的散點圖

Ammar Ali 2022年5月11日
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() 函式屬性。

Author: 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