複数のプロットの結合
この例では、関数 hold
を使用して同じ座標軸内のプロットを結合する方法と、関数 tiledlayout
を使用して Figure に複数の座標軸を作成する方法を説明します。
同一座標軸にプロットを結合
既定では、新しいプロットは既存のプロットをクリアし、タイトルなどの座標軸のプロパティをリセットします。ただし、hold on
コマンドを使用することで、複数のプロットを同じ座標軸で結合できます。たとえば、2 つのラインと散布図をプロットします。次に、ホールド状態をオフにリセットします。
x = linspace(0,10,50); y1 = sin(x); plot(x,y1) title('Combine Plots') hold on y2 = sin(x/2); plot(x,y2) y3 = 2*sin(x); scatter(x,y3) hold off
ホールド状態がオンの場合、新しいプロットが、既存のプロットをクリアしたり、タイトルや軸ラベルなどの座標軸のプロパティをリセットすることはありません。プロットは座標軸の ColorOrder
プロパティと LineStyleOrder
プロパティに基づき色とライン スタイルを順次繰り返します。新しいデータに合わせて座標軸の範囲と目盛り値を調整できます。
Figure における複数の座標軸の表示
関数 tiledlayout
を使用すると、単一の Figure に複数の座標軸を表示することができます。この関数は、Figure 全体にわたって不可視のタイルのグリッドを含む、タイル表示のチャート レイアウトを作成します。それぞれのタイルに、プロットを表示するための座標軸を含めることができます。レイアウトを作成した後、関数 nexttile
を呼び出して axes オブジェクトをレイアウト内に配置します。次に、プロット関数を呼び出して、座標軸にプロットします。たとえば、2 行 1 列のレイアウトに 2 つのプロットを作成します。各プロットにタイトルを追加します。
x = linspace(0,10,50); y1 = sin(x); y2 = rand(50,1); tiledlayout(2,1) % Top plot nexttile plot(x,y1) title('Plot 1') % Bottom plot nexttile scatter(x,y2) title('Plot 2')
複数の行または列にまたがるプロットの作成
複数の行または列にまたがるプロットを作成するには、nexttile
を呼び出す際に span
引数を指定します。たとえば、2 行 2 列のレイアウトを作成します。最初の 2 つのタイルにプロットします。次に、1 つの行と 2 つの列にまたがるプロットを作成します。
x = linspace(0,10,50); y1 = sin(x); y2 = rand(50,1); % Top two plots tiledlayout(2,2) nexttile plot(x,y1) nexttile scatter(x,y2) % Plot that spans nexttile([1 2]) y2 = rand(50,1); plot(x,y2)
座標軸の外観の変更
各 axes オブジェクトにプロパティを設定することで、座標軸の外観を変更します。出力引数を指定して関数 nexttile
を呼び出すことで、axes オブジェクトを取得できます。また、axes オブジェクトをグラフィックス関数の最初の入力引数として指定し、関数が正しい座標軸を必ずターゲットとするようにもできます。
たとえば、2 つのプロットを作成し、axes オブジェクトを変数 ax1
および変数 ax2
に代入します。最初のプロットの座標軸のフォント サイズと x 軸の色を変更します。2 番目のプロットにグリッド ラインを追加します。
x = linspace(0,10,50); y1 = sin(x); y2 = rand(50,1); tiledlayout(2,1) % Top plot ax1 = nexttile; plot(ax1,x,y1) title(ax1,'Plot 1') ax1.FontSize = 14; ax1.XColor = 'red'; % Bottom plot ax2 = nexttile; scatter(ax2,x,y2) title(ax2,'Plot 2') grid(ax2,'on')
タイル周辺の間隔の制御
Padding
プロパティと TileSpacing
プロパティを指定することで、レイアウト内のタイル周辺の間隔を制御できます。たとえば、2 行 2 列のレイアウトに 4 つのプロットを表示します。
x = linspace(0,30);
y1 = sin(x);
y2 = sin(x/2);
y3 = sin(x/3);
y4 = sin(x/4);
% Create plots
t = tiledlayout(2,2);
nexttile
plot(x,y1)
nexttile
plot(x,y2)
nexttile
plot(x,y3)
nexttile
plot(x,y4)
Padding
プロパティと TileSpacing
プロパティを 'compact'
に設定することで、レイアウトの周囲と各タイルの周辺の間隔を狭めます。
t.Padding = 'compact'; t.TileSpacing = 'compact';
共有のタイトルおよび軸ラベルの表示
共有のタイトルと共有の軸ラベルをレイアウトに表示することができます。2 行 1 列のレイアウト t
を作成します。次に、ライン プロットとステム プロットを表示します。関数 linkaxes
を呼び出すことで、x 軸の範囲を同期します。
x1 = linspace(0,20,100); y1 = sin(x1); x2 = 3:17; y2 = rand(1,15); % Create plots. t = tiledlayout(2,1); ax1 = nexttile; plot(ax1,x1,y1) ax2 = nexttile; stem(ax2,x2,y2) % Link the axes linkaxes([ax1,ax2],'x');
t
を関数 title
、xlabel
、および ylabel
に渡すことで、共有のタイトルと共有の軸ラベルを追加します。x 軸の目盛りラベルを上のプロットから削除し、t
の TileSpacing
プロパティを 'compact'
に設定することで、プロットを互いに近付けます。
% Add shared title and axis labels title(t,'My Title') xlabel(t,'x-values') ylabel(t,'y-values') % Move plots closer together xticklabels(ax1,{}) t.TileSpacing = 'compact';
参考
関数
tiledlayout
|nexttile
|title
|hold