はじめに
MATLABでデータを可視化する際、複数のプロットを1つの図にまとめることはよくある作業のひとつです。例えば、同じ座標軸上に複数の関数やデータ系列を重ねたり、複数のサブプロットを並べたりすることで、比較や相関関係を一目で把握できるようになります。本記事では、複数のプロットの結合方法として、主に以下の3つのアプローチを紹介します。
- 同じ座標軸への重ね描き
- サブプロット機能の利用
- タイル表示機能(tiledlayout)によるレイアウト
これらを活用することで、より見やすいグラフを効率よく作成できるようになります。
キーワード:MATLAB, 複数のプロットの結合, hold on, subplot, tiledlayout, グラフレイアウト, 比較可視化
1. 同じ座標軸への重ね描き
1.1 hold on
と hold off
最もシンプルな方法は、hold on
を使用することです。これは、現在の座標軸を保持し、次に実行する plot
コマンドなどの描画命令を同じグラフ上に重ねるためのコマンドです。
x = 0:0.1:2*pi;
y1 = sin(x);
y2 = cos(x);
plot(x, y1, 'r-', 'LineWidth', 1.5);
hold on; % 次のプロットを重ねる
plot(x, y2, 'b--', 'LineWidth', 1.5);
hold off; % 軸の保持を解除
xlabel('x');
ylabel('value');
title('Sine and Cosine on the same axes');
legend({'sin(x)','cos(x)'});
grid on;
plot
→hold on
→ 再度plot
することで、同じ座標軸上に2本の曲線を重ね描きlegend
で凡例を追加することで、どのラインがどのデータに対応しているかを明確化

図1.グラフの重ね合わせ
2. サブプロット機能の利用
2.1 subplot
の基本
複数のプロットを、行列状に並べて表示したい場合には subplot
関数が便利です。subplot(m,n,p)
の形で指定すると、m×n の分割領域の p 番目にグラフを表示できます。
これにより、1つの Figure ウィンドウ内に4種類のグラフを分割配置できます。比較やレイアウトに非常に便利です。
x = linspace(0,2*pi,100);
y_sin = sin(x);
y_cos = cos(x);
% 2行×2列の枠を作り、1番目の領域にグラフ
subplot(2,2,1);
plot(x, y_sin, 'r');
title('Sine');
% 2×2の枠の2番目
subplot(2,2,2);
plot(x, y_cos, 'b');
title('Cosine');
% 3番目
subplot(2,2,3);
plot(x, y_sin .* y_cos, 'g');
title('sin(x) * cos(x)');
% 4番目
subplot(2,2,4);
plot(x, y_sin.^2 + y_cos.^2, 'k');
title('sin^2(x) + cos^2(x)');

図2.subplotを用いたグラフの分割配置
3. タイル表示機能(tiledlayout)によるレイアウト
3.1 tiledlayout
と nexttile
より柔軟なレイアウトを組みたい場合、MATLABの新しい機能である tiledlayout
を使うと便利です。subplot
に比べて余白やラベルの調整がしやすく、複雑な配置にも対応できます。
tiledlayout
は subplot
と同様に行×列の分割を設定しますが、nexttile
で順にタイルを指定しながらプロットを作成していきます。余白の調整や全体タイトルの付与など、追加のオプションも豊富です。
x = 0:0.1:2*pi;
y1 = sin(x);
y2 = cos(x);
y3 = sin(2*x);
% 2行×2列のタイルレイアウトを作成
tiledlayout(2,2);
% 1枚目
nexttile;
plot(x, y1, 'r');
title('sin(x)');
% 2枚目
nexttile;
plot(x, y2, 'b');
title('cos(x)');
% 3枚目
nexttile;
plot(x, y3, 'g');
title('sin(2x)');
% 4枚目
nexttile;
plot(x, y1+y2, 'm');
title('sin(x) + cos(x)');

図3.tiledlayoutを用いたグラフの分割配置
まとめ
本記事では、MATLABにおける複数のプロットの結合を行う代表的な方法を3つ紹介しました。
- 同じ座標軸への重ね描き:
hold on
/hold off
を使用し、複数のデータ系列を1つのプロットに重ねる - サブプロットの利用:
subplot(m,n,p)
でプロット領域を分割し、比較しやすいレイアウトを作成 - タイル表示機能(tiledlayout):
nexttile
と組み合わせて、柔軟なレイアウトや余白調整が可能
これらを組み合わせることで、データの傾向や比較、関連性をより分かりやすく可視化できます。
さらなる学習リソース
- MathWorks公式ドキュメント(日本語)
MATLABの複数のプロットに関する説明 - MATLAB Answers (Q&Aフォーラム)
複数グラフを組み合わせる上級テクニックやトラブルシュートが多数掲載 - YouTube MathWorks公式チャンネル
グラフ作成やレイアウトに関するチュートリアル動画が豊富に用意
キーワード再掲:MATLAB, 複数のプロットの結合, hold on, subplot, tiledlayout, グラフレイアウト, 比較可視化