Main Content

yyaxis

2 本の y 軸があるチャートの作成

説明

yyaxis left は、現在の座標軸のうち、左の y 軸に関連付けられている側をアクティブにします。後続のグラフィックス コマンドは左側をターゲットにします。現在の座標軸に y 軸が 2 本含まれていない場合、このコマンドは 2 番目の y 軸を追加します。軸がない場合、このコマンドはまずそれらの軸を作成します。

yyaxis right は、現在の座標軸のうち、右の y 軸に関連付けられている側をアクティブにします。後続のグラフィックス コマンドは、右側をターゲットにします。

yyaxis(ax,___) は、現在の座標軸ではなく、座標軸 ax のアクティブな側を指定します。座標軸に y 軸が 2 本含まれていない場合、このコマンドは 2 番目の y 軸を追加します。座標軸を最初の入力引数として指定します。'left' および 'right' のように、一重引用符で囲みます。

すべて折りたたむ

左右両側に y 軸を 1 本ずつもつ座標軸を作成します。左の y 軸に対してデータ セットをプロットします。次に、yyaxis right を使用して右側をアクティブにして、後続のグラフィックス関数のターゲットにします。右の y 軸に対して 2 番目のデータ セットをプロットし、右の y 軸の範囲を設定します。

x = linspace(0,10);
y = sin(3*x);
yyaxis left
plot(x,y)

z = sin(3*x).*exp(0.5*x);
yyaxis right
plot(x,z)
ylim([-150 150])

Figure contains an axes object. The axes object contains 2 objects of type line.

2 本の y 軸をもつチャートを作成し、それぞれの側にタイトルと軸ラベルを追加します。

サンプル ファイル accidents.mat から行列 hwydata を読み込みます。左の y 軸に対して hwydata の 5 番目の列をプロットし、散布図を作成します。タイトルと座標軸ラベルを追加します。

load('accidents.mat','hwydata')
ind = 1:51;
drivers = hwydata(:,5);
yyaxis left
scatter(ind,drivers)
title('Highway Data')
xlabel('States')
ylabel('Licensed Drivers (thousands)')

Figure contains an axes object. The axes object with title Highway Data, xlabel States, ylabel Licensed Drivers (thousands) contains an object of type scatter.

右の y 軸に対して hwydata の 7 番目の列をプロットし、2 番目の散布図を作成します。次に、右の y 軸にラベルを付けます。

pop = hwydata(:,7);
yyaxis right
scatter(ind,pop)
ylabel('Vehicle Miles Traveled (millions)')

Figure contains an axes object. The axes object with title Highway Data, xlabel States, ylabel Vehicle Miles Traveled (millions) contains 2 objects of type scatter.

hold on コマンドを使用して、左の y 軸に対して 2 本のラインをプロットします。

x = linspace(0,10);
yl1 = sin(x);
yl2 = sin(x/2);
yyaxis left
plot(x,yl1)
hold on
plot(x,yl2)

右の y 軸に対して 2 本のラインをプロットします。hold コマンドは左右両方の y 軸に作用するので、このコマンドを再実行する必要はありません。プロット後、hold をオフに戻します。

yr1 = x;
yr2 = x.^2;
yyaxis right
plot(x,yr1)
plot(x,yr2)
hold off

左側をアクティブにしてから cla コマンドを使用して、左側をクリアします。

yyaxis left
cla

使用する 2 色に色の順序を指定することにより、座標軸のそれぞれの側にカラー スキームを指定します。R2019b 以降、関数 colororder を使用して色の順序を設定できます。次に、左の y 軸に対して 2 本のライン、右の y 軸に対して 2 本のラインをプロットします。凡例を追加します。

colororder({'b','m'})

yyaxis left
y = [1 2; 3 4];
plot(y)

yyaxis right
z = [4 3; 2 1];
plot(z)
legend

Figure contains an axes object. The axes object contains 4 objects of type line.

座標軸のそれぞれの側に色の順序を指定することで、個々のプロットの色を制御します。

左側に対して 3 つの棒グラフをプロットします。左側の色の順序を既定の色の順序に設定することで、それぞれの bar series に異なる色を使用します。

yyaxis left
bar(magic(3));
colororder('default')

右側に対して 3 つの散布図をプロットします。色の順序を色名の配列に設定することで、それぞれの散布図に異なる色を使用します。あるいは、RGB 3 成分の行列を使用して色を指定することもできます。次に、凡例を追加します。

yyaxis right
scatter([1 2 3],[2 5 2],'filled')
hold on
scatter([1 2 3],[3 4 1],'filled')
scatter([1 2 3],[4 2 4],'filled')
hold off
colororder({'r','b','c'})
legend

Figure contains an axes object. The axes object contains 6 objects of type bar, scatter.

R2019b 以降、関数 tiledlayout および nexttile を使用して、プロットをタイル表示できます。関数 tiledlayout を呼び出して、2 行 1 列のタイル表示チャート レイアウトを作成します。関数 nexttile を呼び出して、axes オブジェクト ax1 および ax2 を作成します。yyaxis の最初の入力として ax1 を指定することで、上の座標軸に 2 番目の y 軸を追加します。座標軸を指定しない場合、yyaxis は 2 番目の y 軸を現在の座標軸に追加します。

x = linspace(1,10);
tiledlayout(2,1)

% Top plot
ax1 = nexttile;
yyaxis(ax1,'left')
plot(ax1,x,sin(x))
yyaxis(ax1,'right')
plot(ax1,x,exp(x))

% Bottom plot
ax2 = nexttile;
plot(ax2,1:10)

Figure contains 2 axes objects. Axes object 1 contains an object of type line. Axes object 2 contains an object of type line.

入力引数

すべて折りたたむ

ターゲット座標軸。Axes オブジェクトとして指定します。Axes オブジェクトを指定しない場合、yyaxis は現在の座標軸を使用します。

制限

  • 2 本の y 軸を操作するときに以下は実行できません。

    • 座標軸を回転する (2 次元表示のみ)。

    • 注釈を固定する。

    • copyobj を使用して axes オブジェクトをコピーする。

ヒント

  • 座標軸のアクティブな側を調べるには、Axes オブジェクトの YAxisLocation プロパティをクエリします。左側がアクティブな場合はプロパティが 'left' に、右側がアクティブな場合はプロパティが 'right' に設定されています。y 軸を 2 本もつ Axes オブジェクトの YAxisLocation プロパティは読み取り専用です。

  • アクティブな側をクリアするには、cla を使用します。座標軸の両側をクリアして右の y 軸を削除するには、cla reset を使用します。別の方法として、両側のクリアと右の y 軸の削除を、次のプロット コマンドまで待つこともできます。そのためには、Axes オブジェクトの NextPlot プロパティを 'replaceall' に設定します。

  • Axes オブジェクトの Children プロパティには、アクティブな側の子のみが含まれます。両側のすべての子にアクセスするには、関数 allchild を使用します。

アルゴリズム

すべて折りたたむ

グリッド ライン

グリッド ラインは、左の y 軸に沿う目盛りの位置に対応します。

色とライン スタイル

座標軸の特定の側に対応するプロットには、その側の y 軸と同じ色が使用されます。一方の側に複数のラインが含まれる場合、それらのラインにはライン スタイルが順番に繰り返して使用されます。左の y 軸には Axes オブジェクトの色の順番で最初の色が使用され、右の y 軸には 2 番目の色が使用されます。

チャートを含む Axes オブジェクトに 2 番目の y 軸を追加した場合、既存のチャートと左の y 軸の色は変更されません。右の y 軸には、色の順番で次の色が使用されます。

座標軸のプロパティ

y 軸に関連する座標軸プロパティは 2 つの値をもちます。ただし、MATLAB® はアクティブな側の値にのみアクセスを許可します。たとえば、左側がアクティブな場合、Axes オブジェクトの YLim プロパティには左の y 軸の範囲が含まれます。しかし、右側がアクティブな場合、YLim プロパティには右の y 軸の範囲が含まれます。

例外として、Axes オブジェクトの YAxis プロパティには、2 つのルーラー オブジェクト (それぞれの y 軸に 1 つずつ) で構成される配列が含まれます。ルーラーを使用すると、アクティブな側に関係なく、それぞれの y 軸にアクセスできます。例については、2 つの y 軸があるチャートのプロパティの変更を参照してください。

バージョン履歴

R2016a で導入