Main Content

biplot

説明

biplot(coefs) は、行列 coefs 内の係数のバイプロットを作成します。バイプロットは、coefs の列数が 2 の場合は 2 次元、3 の場合は 3 次元になります。バイプロットの座標軸は coefs の列を、バイプロットのベクトルは coefs の行 (観測された変数) を表します。

biplot(coefs,Name,Value) では、1 つ以上の名前と値のペアの引数を使用して追加オプションを指定します。たとえば、'Positive','true' を指定すると、バイプロットを正の象限 (2 次元または 3 次元) に制限できます。

biplot(ax,___) は、Axes オブジェクト ax によって指定されたプロットの座標軸を使用します。ax を最初の入力引数として指定し、その後に上記の構文での入力引数の組み合わせが続きます。

h = biplot(___) は、biplot で作成されるグラフィックス オブジェクトへのハンドルの列ベクトルを返します。h を使用して、特定のグラフィックス オブジェクトのプロパティのクエリと変更を行います。詳細については、グラフィックス オブジェクトのプロパティを参照してください。

すべて折りたたむ

最初の 3 つの主成分の係数、観測値、および carsmall データ セットの観測された変数からバイプロットを作成します。

標本データを読み込みます。

load carsmall

変数 AccelerationDisplacementHorsepowerMPG および Weight から構成される行列を作成します。この行列から、欠損値が含まれている行を削除します。

X = [Acceleration Displacement Horsepower MPG Weight];
X = rmmissing(X);

X を標準化し、主成分分析を実行します。

Z = zscore(X); % Standardized data
[coefs,score] = pca(Z);

5 行 5 列の行列 coefs には、主成分の係数が格納されます (各主成分に対して 1 列)。行列 score には、主成分のスコア (観測値) が格納されます。

最初の 3 つの主成分の係数からバイプロットを作成します。バイプロットの座標軸は coefs の列を、バイプロットのベクトルは coefs の行を表します。

biplot(coefs(:,1:3))

Figure contains an axes object. The axes object with xlabel Component 1, ylabel Component 2 contains 3 objects of type line. One or more of the lines displays its values using only markers

各変数にラベルを付け、最初の 3 つの主成分からなる空間に観測値をプロットすることにより、より詳細なバイプロットを作成します。

vbls = {'Accel','Disp','HP','MPG','Wgt'}; % Labels for the variables
biplot(coefs(:,1:3),'Scores',score(:,1:3),'VarLabels',vbls);

Figure contains an axes object. The axes object with xlabel Component 1, ylabel Component 2 contains 9 objects of type line, text. One or more of the lines displays its values using only markers

fisheriris データ セットを読み込み、花の測定値を meas で標準化し、主成分分析を実行します。

load fisheriris
Z = zscore(meas);
[coefs,scores] = pca(Z);

2 つのサブプロットを使用して Figure を作成し、ax1 および ax2 として Axes オブジェクトを返します。対応する Axes オブジェクトを参照して、各座標軸のセットでバイプロットを作成します。上のサブプロットに、最初の 2 つの主成分を使用してバイプロットを表示します。下のサブプロットに、3 番目と 4 番目の主成分を使用してバイプロットを表示します。対応する Axes オブジェクトを関数 xlimylim に渡して、X 軸と Y 軸の範囲を指定します。ax2xlabelylabel に渡して、下のプロットの X 軸と Y 軸のラベルを変更します。

figure('Units','normalized','Position',[0.3 0.3 0.3 0.5])
variables = {'SepalLength','SepalWidth','PetalLength','PetalWidth'};
ax1 = subplot(2,1,1); % Top subplot
biplot(ax1,coefs(:,1:2),'Scores',scores(:,1:2),'VarLabels',variables);
xlim(ax1,[-1 1])
ylim(ax1,[-1 1])

ax2 = subplot(2,1,2); % Bottom subplot
biplot(ax2,coefs(:,3:4),'Scores',scores(:,3:4),'VarLabels',variables);
xlim(ax2,[-1 1])
ylim(ax2,[-1 1])
xlabel(ax2,'Component 3')
ylabel(ax2,'Component 4')

Figure contains 2 axes objects. Axes object 1 with xlabel Component 1, ylabel Component 2 contains 8 objects of type line, text. One or more of the lines displays its values using only markers Axes object 2 with xlabel Component 3, ylabel Component 4 contains 8 objects of type line, text. One or more of the lines displays its values using only markers

サポートされている line プロパティの名前と値を指定し、biplot によって作成されたグラフィックス オブジェクトのハンドルを使用することにより、バイプロットの外観を制御します。

標本データを読み込みます。

load carsmall

変数 AccelerationDisplacement および MPG から構成される行列を作成します。この行列から、欠損値が含まれている行を削除します。

X = [Acceleration Displacement MPG];
X = rmmissing(X);

X を標準化し、主成分分析を実行します。

Z = zscore(X); % Standardized data
[coefs,score] = pca(Z);

3 行 3 列の行列 coefs には、主成分の係数が格納されます (各主成分に対して 1 列)。行列 score には、主成分のスコア (観測値) が格納されます。

最初の 2 つの主成分からなる平面に、観測値のバイプロットを作成します。バイプロットには、既定のプロパティを使用します。

h = biplot(coefs(:,1:2),'Scores',score(:,1:2));

Figure contains an axes object. The axes object with xlabel Component 1, ylabel Component 2 contains 101 objects of type line.

h は、グラフィックス オブジェクトのハンドルのベクトルです。biplot によって返された line オブジェクトのプロパティを変更できます。

識別を容易にするため、3 つの変数にラベルを付けます。すべての line オブジェクトに対して、マーカー記号として円を、ラインの色として青を指定します。

vbls = {'Accel','Disp','MPG'}; % Array of variable labels
h1 = biplot(coefs(:,1:2),'Scores',score(:,1:2),...
    'Color','b','Marker','o','VarLabels',vbls);

Figure contains an axes object. The axes object with xlabel Component 1, ylabel Component 2 contains 104 objects of type line, text.

h1 は、グラフィックス オブジェクトのハンドルのベクトルです。h1 の最初のいくつかの要素を表示します。

h1(1:10) % First ten object handles
ans = 
  10x1 graphics array:

  Line    (varline)
  Line    (varline)
  Line    (varline)
  Line    (varmarker)
  Line    (varmarker)
  Line    (varmarker)
  Text    (varlabel)
  Text    (varlabel)
  Text    (varlabel)
  Line    (obsmarker)

変数ラベルのハンドル (h1(7:9)) はテキストです。したがって、line プロパティについて指定した設定はこれらのラベルに影響を与えません。

最初の 2 つの主成分からなる平面に別の観測値のバイプロットを作成し、識別を容易にするため 3 つの変数にラベルを付けます。

h2 = biplot(coefs(:,1:2),'Scores',score(:,1:2),'VarLabels',vbls);

Figure contains an axes object. The axes object with xlabel Component 1, ylabel Component 2 contains 104 objects of type line, text.

h2 は、グラフィックス オブジェクトのハンドルのベクトルです。h2 の最初のいくつかの要素を表示します。

h2(1:10) % First ten object handles
ans = 
  10x1 graphics array:

  Line    (varline)
  Line    (varline)
  Line    (varline)
  Line    (varmarker)
  Line    (varmarker)
  Line    (varmarker)
  Text    (varlabel)
  Text    (varlabel)
  Text    (varlabel)
  Line    (obsmarker)

h2 には 104 個のオブジェクト ハンドルが含まれています。

  • 最初の 3 つのハンドル (h(1:3)) は、3 つの変数の line ハンドルに対応します。

  • ハンドル h(4:6) は、3 つの変数のマーカー ハンドルに対応します。

  • ハンドル h(7:9) は、3 つの変数のテキスト ハンドルに対応します。

  • 次の 94 個のハンドルは、観測値の line ハンドルに対応します。

  • 最後のハンドルは、座標軸の line ハンドルに対応します。

グラフィックス オブジェクトのハンドルを使用して、バイプロットの特定のプロパティを変更します。

変数 (ベクトル) のラインの色を変更します。

for k = 1:3
    h2(k).Color = 'r'; % Specify red as the line color
end

変数ラベルのフォントを変更します。

for k = 7:9
    h2(k).FontWeight = 'bold';  % Specify bold font
end

観測値マーカーの色を変更します。

for k = 10:103
    h2(k).MarkerEdgeColor = 'k';  % Specify black color for the observations
end

Figure contains an axes object. The axes object with xlabel Component 1, ylabel Component 2 contains 104 objects of type line, text.

入力引数

すべて折りたたむ

係数。2 列または 3 列の行列を指定します。coefs が 2 列である場合、バイプロットは 2 次元になります。coefs が 3 列である場合、バイプロットは 3 次元になります。通常 coefs の列には pca または pcacov で作成された主成分係数、または factoran で推定された因子負荷量が含まれています。バイプロットの座標軸は coefs の列を、バイプロットのベクトルは coefs の行 (観測された変数) を表します。

データ型: single | double

プロットの座標軸。Axes オブジェクトとして指定します。ax を指定しない場合、biplot は、現在の座標軸を使用してプロットを作成します。Axes オブジェクトを作成する方法の詳細については、axes を参照してください。

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。

R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

例: biplot(coefs,'VarLabels',varlabels) は、配列 varlabels 内のテキストで各ベクトル (変数) にラベルを付けます。

スコア。'Scores' と、列数が coefs と同じである行列から構成されるコンマ区切りのペアとして指定します。通常、Scores には、pca で作成した主成分のスコアまたは factoran で推定した因子スコアを格納します。関数 biplot は、Scores (観測値) の各行を点として、coefs (観測された変数) の各行をベクトルとして表します。

例: 'Scores',score(:,1:3)

データ型: single | double

変数のラベル。'VarLabels' と文字配列、string 配列または cell 配列から構成されるコンマ区切りのペアとして指定します。biplot は、この配列内のテキストを使用して各ベクトル (観測された変数) にラベルを付けます。

例: 'VarLabels',varlabels

データ型: char | string | cell

観測値のラベル。'ObsLabels' と文字配列、string 配列または cell 配列から構成されるコンマ区切りのペアとして指定します。biplot は、データ カーソルを表示するときに、この配列内のテキストを観測値の名前として使用します。

例: 'ObsLabels',obslabels

データ型: char | string | cell

正の座標におけるプロットのインジケーター。'Positive' と次のいずれかの logical 値から構成されるコンマ区切りのペアとして指定します。

説明
false

すべての座標で範囲 +/– max(coefs(:)) に対してバイプロットを作成します (既定)。

true

バイプロットを正の象限 (2 次元または 3 次元) に制限します。

例: 'Positive',true

データ型: logical

プロパティ名。プロパティ名と、サポートされる 1 つ以上の Line のプロパティに関連付けられている値から構成されるコンマ区切りのペアとして指定します。これらのプロパティは、biplot によって作成されるすべてのプリミティブな line グラフィックス オブジェクトの名前と値です。指定したプロパティ名は、グラフィックス オブジェクトの外観と動作を制御します。

例: 'Marker','square','MarkerSize',10

出力引数

すべて折りたたむ

biplot によって作成されたグラフィックス オブジェクトのハンドル。列ベクトルとして返されます。このベクトルには、次の順序でハンドルが格納されます。

  1. 変数に対応するハンドル (line ハンドル、マーカー ハンドル、テキスト ハンドルの順)

  2. 観測値に対応するハンドル (マーカー ハンドル、テキスト ハンドルの順)

  3. 座標軸の line に対応するハンドル

これらのハンドルを使用して、特定のグラフィックス オブジェクトのプロパティのクエリと変更を行うことができます。詳細については、グラフィックス オブジェクト ハンドルおよびグラフィックス配列を参照してください。

ヒント

  • 大規模なデータ セットや多数の変数を含むデータ セットを扱うときは、グラフィックス ハンドルを割り当てずに biplot を呼び出すことでパフォーマンスを高めることができます。この場合、個々のハンドルにそれらのタグを使用してアクセスします。以下に例を示します。

    gca().Children
    ans = 
      5×1 Line array:
    
      Text    (varlabel)
      Line    (obsmarker)     
      Line    (axisline)      
      Line    (varmarker)     
      Line    (varline)   
    h = findobj(gca,"Tag","axisline")
    h = 
    
      Line (axisline) with properties:
    
                  Color: [0 0 0]
              LineStyle: '-'
              LineWidth: 1
                 Marker: 'none'
             MarkerSize: 1
        MarkerFaceColor: 'none'
                  XData: [-0.9395 0.9395 NaN 0 0]
                  YData: [0 0 NaN -0.9395 0.9395]
                  ZData: [1×0 double]
    
      Show all properties
    新しい軸のライン スタイルを設定します。
    h.LineStyle = ":";

アルゴリズム

バイプロットを使用すると、最初の 2 つまたは 3 つの主成分に対する各変数の寄与の大きさおよび符号を可視化することと、これらの主成分に関して各観測値を表すことができます。関数 biplot は、以下を行います。

  • 符号規則を適用して、coefs の各列で大きさが最大である要素を正にします。この処理により、coefs のベクトルの一部が逆方向に反転しますが、多くの場合はプロットが読みやすくなります。係数ベクトルの符号を変更しても意味は変わらないため、プロットの解釈は影響を受けません。

  • プロットに収まるようにスコアをスケーリングします。つまり、各スコアをすべてのスコアの最大絶対値で除算してから、coefs の最大係数長を乗算します。次に、biplot は係数の符号規則に従ってスコア座標の符号を変更します。

バージョン履歴

R2006a より前に導入