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)
出力:
scatter()
関数で行ったのと同じ方法で、scatter3()
関数のプロパティを変更することもできます。