Main Content

複数のスケールと座標軸の範囲をもつデータの表示

複数のスケールおよび座標軸の範囲を使用してデータを可視化するには、さまざまな手法を使用できます。たとえば、関数 yyaxis を使用して 2 つの y 軸をもつプロットを作成できます。複数の x 軸および y 軸、複数のカラー バーを使用してプロットを作成、または複数の区間に分けられた不連続な軸をもつプロットを作成するには、関数 tiledlayout を使用します。

2 つの y 軸をもつデータの表示

2 つの y 軸をもつプロットを作成するには、関数 yyaxis を使用します。たとえば、2 つの y 軸を使用して 2 本のラインを別々のスケールにプロットできます。

axes オブジェクトを作成し、yyaxis left を呼び出して左側の y 軸をアクティブにします。次に、正弦波をプロットします。

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

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

yyaxis right を呼び出して右側の y 軸をアクティブにします。次に、増幅された正弦波をプロットします。

yyaxis right
y2 = sin(3*x).*exp(0.5*x);
plot(x,y2)

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

複数の x 軸と y 軸をもつデータの表示

R2019b 以降

別々の x 軸と y 軸を使用して 2 組のデータセットをプロットするには、タイル表示チャート レイアウト内に 2 つの異なる axes オブジェクトを作成します。そのうち 1 つの axes オブジェクト内で x 軸をプロット ボックスの上側に移動し、y 軸をプロット ボックスの右側に移動します。

たとえば、異なる x 軸の範囲および y 軸の範囲をもつ 2 つのプロットを作成できます。

まず、2 組の x 座標および y 座標を作成します。

x1 = 0:0.1:40;
y1 = 4.*cos(x1)./(x1+2);
x2 = 1:0.2:20;
y2 = x2.^2./x2.^3;

タイル表示チャート レイアウトを作成し、axes オブジェクトを 1 つ作成します。そして、以下のように座標軸にプロットします。

  • 11 列のタイル表示チャート レイアウト t を作成します。

  • 関数 axes を呼び出し、親オブジェクトとして t を指定することによって、axes オブジェクト ax1 を作成します。

  • x1y1 を赤色のラインでプロットし、ターゲット座標軸として ax1 を指定します。

  • x 軸と y 軸の色をプロットしたラインに合わせて変更します。プロットした後に座標軸のプロパティを設定することで、設定が確実に維持されます。

t = tiledlayout(1,1);
ax1 = axes(t);
plot(ax1,x1,y1,'-r')
ax1.XColor = 'r';
ax1.YColor = 'r';

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

2 つ目の axes オブジェクトを作成し、2 組目のデータを赤色ではなく黒色でプロットします。その後、2 つ目の axes オブジェクトにプロパティを設定し、x 軸と y 軸を移動してプロットが互いを遮らないようにします。

  • 関数 axes を呼び出し、親オブジェクトとして t を指定することによって、axes オブジェクト ax2 を作成します。

  • x2y2 を黒色のラインでプロットし、ターゲット座標軸として ax2 を指定します。

  • x 軸を上側に移動し、y 軸を右側に移動します。

  • axes オブジェクトの色を 'none' に設定し、下にあるプロットが見えるようにします。

  • プロット ボックスをオフにし、ボックスのエッジが x 軸と y 軸を遮らないようにします。

ax2 = axes(t);
plot(ax2,x2,y2,'-k')
ax2.XAxisLocation = 'top';
ax2.YAxisLocation = 'right';
ax2.Color = 'none';
ax1.Box = 'off';
ax2.Box = 'off';

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

不連続な x 軸へのデータのプロット

R2019b 以降

タイル表示チャート レイアウトを使用すると、プロットの 1 つの軸が複数の区間に分かれているように見せることができます。たとえば、x 軸の一部を除外して、その他の関心領域に注目させるのに役立ちます。

座標ベクトル x および y を作成します。

x = 0:0.1:60;
y = 4.*cos(x)./(x+2);

2 つのタイルをもつタイル表示チャート レイアウトを作成し、両方のタイルをまたいで axes オブジェクトを配置します。最終的な表示では、この axes オブジェクトは他の 2 つの axes オブジェクトの背後に表示されます。この x 軸の一部が表示されることによって、1 つの長い x 軸に見えます。

  • 12 列のタイル表示チャート レイアウト t を作成し、タイルの間隔をコンパクトに設定します。タイルの間隔を設定することで、x 軸の区間と区間の隙間のサイズを制御できます。

  • 関数 axes を呼び出し、親オブジェクトとして t を指定することによって、背景の座標軸 bgAx を作成します。名前と値の引数を指定して、目盛りをすべて削除し、プロット ボックスをオフにします。

  • bgAxLayout.TileSpan プロパティを [1 2] に設定して、背景の座標軸が両タイルをまたぐようにします。

figure
t = tiledlayout(1,2,'TileSpacing','compact');
bgAx = axes(t,'XTick',[],'YTick',[],'Box','off');
bgAx.Layout.TileSpan = [1 2];

Figure contains an axes object. The axes object is empty.

1 つ目のタイルの bgAx の前面に axes オブジェクトを作成します。xy をプロットし、x 軸の範囲を最初の区間に設定します。

  • 関数 axes を呼び出し、親オブジェクトとして t を指定することによって、ax1 を作成します。既定で、座標軸は 1 つ目のタイルに入ります。

  • ax1 に x と y をプロットします。

  • 関数 xline を呼び出して、最初の区間の上限に垂直点線を表示します。

  • x 軸の範囲を最初の区間、[0 15] に設定します。

  • 軸のラベルを追加し、最初の区間を識別します。

ax1 = axes(t);
plot(ax1,x,y)
xline(ax1,15,':');
ax1.Box = 'off';
xlim(ax1,[0 15])
xlabel(ax1, 'First Interval')

Figure contains 2 axes objects. Axes object 1 is empty. Axes object 2 contains 2 objects of type line, constantline.

同じプロセスを繰り返して、2 番目の区間用に別の axes オブジェクトとプロットを作成します。既定で、座標軸は 1 つ目のタイルに表示されます。座標軸の Layout.Tile プロパティを 2 に設定して、座標軸を 2 番目のタイルに移動します。次に、座標軸をリンクして両方の "y" 軸の範囲を一致させます。

% Create second plot
ax2 = axes(t);
ax2.Layout.Tile = 2;
plot(ax2,x,y)
xline(ax2,45,':');
ax2.YAxis.Visible = 'off';
ax2.Box = 'off';
xlim(ax2,[45 60])
xlabel(ax2,'Second Interval')

% Link the axes
linkaxes([ax1 ax2], 'y')

Figure contains 3 axes objects. Axes object 1 is empty. Axes object 2 contains 2 objects of type line, constantline. Axes object 3 contains 2 objects of type line, constantline.

タイトルを追加するには、関数 title にタイル表示チャート レイアウトを渡します。

title(t,'Attenuated Cosine Function')

Figure contains 3 axes objects. Axes object 1 is empty. Axes object 2 contains 2 objects of type line, constantline. Axes object 3 contains 2 objects of type line, constantline.

別々のカラー バーをもつ 2 組のデータの表示

R2020b 以降

1 つの axes オブジェクトがもつことのできるカラー バーは 1 つのみです。複数のカラー バーをもつ可視化を作成するには、タイル表示チャート レイアウトで複数の axes オブジェクトを重ねて表示します。そのうち 1 つの座標軸のみを表示しますが、各座標軸の横にあるカラー バーをレイアウトの外側のタイル内に表示します。

2 つのバブル チャートの座標ベクトル、サイズ データ、カラー データを作成します。

x = 1:15;
n = 70 * randn(1,15) + 50;
y1 = n + x.^2; 
y2 = n - linspace(1,225,15);
sz1 = rand(1,15);
sz2 = rand(1,15);
c = linspace(1,10,15);

それぞれがバブル チャートを含む 2 つの axes オブジェクトをタイル表示チャート レイアウトで重ねて表示します。

  • 11 列のタイル表示チャート レイアウト t を作成します。

  • axes オブジェクト ax1 を作成し、winter カラーマップを使用するバブル チャートを作成します。

  • axes オブジェクト ax2 を作成し、autumn カラーマップを使用するバブル チャートを作成します。この axes オブジェクトは、Visible プロパティを 'off' に設定して非表示にします。

  • これらの axes オブジェクトをリンクして同期させます。この場合、t の子を関数 linkaxes に渡せます。あるいは、個々の axes オブジェクトのベクトルを関数に渡せます。

% create first bubble chart with winter colormap
t = tiledlayout(1,1);
ax1 = axes(t); 
bubblechart(ax1,x,y1,sz1,c)
colormap(ax1,'winter')

% create second bubble chart with autumn colormap
ax2 = axes(t);
bubblechart(ax2,x,y2,sz2,c)
colormap(ax2,'autumn')
ax2.Visible = 'off';

% link the limits of axes
linkaxes(t.Children)

Figure contains an axes object. The axes object contains an object of type bubblechart.

レイアウトの east タイルに、各 axes オブジェクト用のラベルをもつカラー バーを表示します。レイアウトによりカラー バーが配置および整列されます。

cb1 = colorbar(ax1);
cb1.Layout.Tile = 'east';
cb1.Label.String = 'Time (s)';

cb2 = colorbar(ax2);
cb2.Layout.Tile = 'east';
cb2.Label.String = 'Concentration (M)';

Figure contains an axes object. The axes object contains an object of type bubblechart.

参考

関数

関連するトピック