MATLAB での散布図

Ammar Ali 2022年1月20日
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() 関数内の 3 番目の引数として円のサイズを定義する必要があります。たとえば、上のプロットの円のサイズを変更してみましょう。以下のコードを参照してください。

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() 関数の 4 番目の引数として散布図を渡すことにより、散布図の円の色を変更することもできます。たとえば、上記の散布図の円の色を黒に変更してみましょう。以下のコードを参照してください。

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

出力:

散布図の円の色を変更する

上記の散布図では、円の色は黒ですが、scatter() 関数の 4 番目の引数としてその色の RGB 値を入力することにより、任意の色を与えることができます。scatter() 関数で色の名前を文字列として渡すことで、色を変更することもできます。1つのカラー値のみを定義すると、散布図に存在するすべての円に適用されます。入力ベクトル 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() 関数を使用できます。この関数は、指定されたデータを 3D 平面にプロットすることを除いて、scatter() 関数と同じです。scatter3() 関数に 2つまたは 3つの入力ベクトルを与えることができます。3つの入力の場合、最初のベクトルには x 座標が含まれ、2 番目のベクトルには y 座標が含まれ、3 番目のベクトルには z 座標が含まれます。2つの入力ベクトルの場合、3 番目の座標 z は最初の 2つの座標のインデックスから取得されます。たとえば、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