複数のスケールと座標軸の範囲をもつデータの表示
複数のスケールおよび座標軸の範囲を使用してデータを可視化するには、さまざまな手法を使用できます。たとえば、関数 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)
yyaxis right
を呼び出して右側の y 軸をアクティブにします。次に、増幅された正弦波をプロットします。
yyaxis right
y2 = sin(3*x).*exp(0.5*x);
plot(x,y2)
複数の 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 つ作成します。そして、以下のように座標軸にプロットします。
1
行1
列のタイル表示チャート レイアウトt
を作成します。関数
axes
を呼び出し、親オブジェクトとしてt
を指定することによって、axes オブジェクトax1
を作成します。x1
とy1
を赤色のラインでプロットし、ターゲット座標軸としてax1
を指定します。x 軸と y 軸の色をプロットしたラインに合わせて変更します。プロットした後に座標軸のプロパティを設定することで、設定が確実に維持されます。
t = tiledlayout(1,1); ax1 = axes(t); plot(ax1,x1,y1,'-r') ax1.XColor = 'r'; ax1.YColor = 'r';
2 つ目の axes オブジェクトを作成し、2 組目のデータを赤色ではなく黒色でプロットします。その後、2 つ目の axes オブジェクトにプロパティを設定し、x 軸と y 軸を移動してプロットが互いを遮らないようにします。
関数
axes
を呼び出し、親オブジェクトとしてt
を指定することによって、axes オブジェクトax2
を作成します。x2
とy2
を黒色のラインでプロットし、ターゲット座標軸として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';
不連続な 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 軸に見えます。
1
行2
列のタイル表示チャート レイアウトt
を作成し、タイルの間隔をコンパクトに設定します。タイルの間隔を設定することで、x 軸の区間と区間の隙間のサイズを制御できます。関数
axes
を呼び出し、親オブジェクトとしてt
を指定することによって、背景の座標軸bgAx
を作成します。名前と値の引数を指定して、目盛りをすべて削除し、プロット ボックスをオフにします。bgAx
のLayout.TileSpan
プロパティを[1 2]
に設定して、背景の座標軸が両タイルをまたぐようにします。
figure t = tiledlayout(1,2,'TileSpacing','compact'); bgAx = axes(t,'XTick',[],'YTick',[],'Box','off'); bgAx.Layout.TileSpan = [1 2];
1 つ目のタイルの bgAx
の前面に axes オブジェクトを作成します。x と y をプロットし、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')
同じプロセスを繰り返して、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')
タイトルを追加するには、関数 title
にタイル表示チャート レイアウトを渡します。
title(t,'Attenuated Cosine Function')
別々のカラー バーをもつ 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 オブジェクトをタイル表示チャート レイアウトで重ねて表示します。
1
行1
列のタイル表示チャート レイアウト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)
レイアウトの 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)';
参考
関数
tiledlayout
|yyaxis
|axes