はじめに
MATLABは、数値解析だけでなく、データを可視化するための豊富なグラフィックス機能も備えています。その中でも代表的なのが、2次元プロットと3次元プロットです。グラフを使うことで、データの特徴や変化の傾向を直感的に把握できます。本記事では、MATLABを使用した2次元および3次元プロットの基本をわかりやすく解説していきます。
キーワード例: MATLAB, 2次元プロット, 3次元プロット, plot, surf, mesh, 可視化
2次元プロットの基本
1. plot関数
2次元の折れ線グラフを描くときに最もよく使われるのが plot 関数です。
- x と y のベクトルを渡すと、それに応じた折れ線グラフが表示されます。
- 軸ラベルやタイトルを付けると、読み手にとって分かりやすいグラフになります。
x = 0:0.1:2*pi; % x軸の値を0から2πまで0.1刻みで生成
y = sin(x); % xの値に対応するsin(x)を計算
plot(x, y); % xとyをプロットしてグラフを描画
title('正弦波のプロット'); % グラフのタイトルを設定
xlabel('x'); % x軸のラベルを設定
ylabel('sin(x)'); % y軸のラベルを設定
grid on; % グリッド線を表示

図1.2次元プロットの例①
2. 複数データの重ね描き
複数の系列(異なるデータ)を1つのグラフ上に重ねる場合は、plot 関数に複数の x, y ペアを渡します。
- カラーやラインスタイルを指定すると、グラフがさらに見やすくなります。
- legend 関数で凡例を表示すると、複数のラインが何を表すか分かりやすくなります。
x = 0:0.1:2*pi; % x軸の値を0から2πまで0.1刻みで生成
y1 = sin(x); % xの値に対応するsin(x)を計算しy1に格納
y2 = cos(x); % xの値に対応するcos(x)を計算しy2に格納
plot(x, y1, '-r', x, y2, '--b'); % x, y1を赤の実線(-r)、x, y2を青の破線(--b)でプロット
legend('sin(x)', 'cos(x)'); % 凡例を追加し、それぞれの系列を識別
title('複数系列のプロット'); % グラフのタイトルを設定
grid on; % グラフにグリッド線を表示

図2.2次元プロットの例②
3. subplotによる複数グラフの配置
一つの図の中に複数のグラフを並べたい場合は、subplot 関数を使います。
- (m, n, p) で、m行×n列のレイアウトのうち p番目の領域を指定。
- 上記例では、縦に2つのグラフを配置しています。
x = 0:0.1:2*pi; % x軸の値を0から2πまで0.1刻みで生成
y1 = sin(x); % xの値に対応するsin(x)を計算しy1に格納
y2 = cos(x); % xの値に対応するcos(x)を計算しy2に格納
subplot(2,1,1); % 図を2行1列に分割し、1番目の位置(上段)を選択
plot(x, y1, 'r'); % x, y1を赤色でプロット
title('sin(x)'); % 上段プロットのタイトルを「sin(x)」に設定
subplot(2,1,2); % 図を2行1列に分割し、2番目の位置(下段)を選択
plot(x, y2, 'b'); % x, y2を青色でプロット
title('cos(x)'); % 下段プロットのタイトルを「cos(x)」に設定

図3.2次元プロットの例③
3次元プロットの基本
1. mesh, surf関数
3次元の表面プロットを行うための代表的な関数に、mesh と surf があります。いずれも (X, Y, Z) の3次元データを可視化します。
- mesh はワイヤーフレームで表示、surf は塗りつぶしの表面を表示。
- mesh(X, Y, Z) や surf(X, Y, Z) の引数として、同次元の行列 X, Y, Z を指定。
[X, Y] = meshgrid(-2:0.2:2); % -2から2までを0.2刻みでx, yのグリッド点を生成
Z = X.^2 + Y.^2; % 各グリッド点 (X, Y) に対して Z = X^2 + Y^2 を計算
% メッシュプロット
figure; % 新しい図ウィンドウを作成
mesh(X, Y, Z); % メッシュプロットを作成 (グリッド線のみの3Dプロット)
title('Meshプロット'); % プロットにタイトルを設定
% サーフェスプロット
figure; % 新しい図ウィンドウを作成
surf(X, Y, Z); % サーフェスプロットを作成 (カラーマップ付きの3Dプロット)
title('Surfプロット'); % プロットにタイトルを設定

図4.3次元プロットの例①
2. 3D線プロット (plot3)
3次元座標上に線を描きたい場合は、plot3 関数を使います。
- (x, y, z) の座標を結んで3次元空間上に線を描く。
- 軸ラベルを明確にすると、どの軸が何を示しているか分かりやすくなります。
t = 0:0.1:10; % 時間 t を 0 から 10 まで 0.1 刻みで生成
x = sin(t); % t に基づいて x = sin(t) を計算
y = cos(t); % t に基づいて y = cos(t) を計算
z = t; % t をそのまま z として使用
figure; % 新しい図ウィンドウを作成
plot3(x, y, z, 'LineWidth', 2); % x, y, z を3次元プロット(線の太さを指定)
grid on; % グリッド線を表示
xlabel('x'); % x軸のラベルを設定
ylabel('y'); % y軸のラベルを設定
zlabel('z'); % z軸のラベルを設定
title('3D線プロット(らせん状)'); % グラフのタイトルを設定

図5.3次元プロットの例②
3. カラーマップや視点変更
3次元プロットでは、カラーマップを変更したり、視点を回転させたりして、見やすい表示を工夫することが多いです。
- colormap 関数で色の設定を変更。jet, parula, hot など多様なスタイルから選択可能。
- view(az, el) で視点の方向を設定(azimuth, elevation)。
- shading interp などで表面の描画方法を調整。
[X, Y] = meshgrid(-2:0.2:2); % -2から2までを0.2刻みでx, yのグリッド点を生成
Z = X.^2 + Y.^2; % 各グリッド点 (X, Y) に対して Z = X^2 + Y^2 を計算
surf(X, Y, Z); % X, Y, Z データを使ってサーフェスプロットを描画
colormap('jet'); % カラーマップを 'jet' に設定(青から赤のグラデーション)
shading interp; % 補間処理を有効にしてサーフェスを滑らかに表示
colorbar; % サーフェスに対応するカラーバーを表示
view(45, 30); % 視点を (方位角=45°, 仰角=30°) に設定

図6.3次元プロットの例③
2次元・3次元プロットの比較表
様々なプロット方法をまとめると、以下のようになります。
分類 | 関数名 | 用途・特徴 |
2次元 | plot | 折れ線グラフを描く |
scatter | 散布図 | |
bar | 棒グラフ | |
histogram | ストグラム | |
3次元 | plot3 | 3D空間上にラインを描く |
mesh | ワイヤーフレーム状に3次元表面を描く | |
surf | 塗りつぶしの3次元表面を描く | |
contour3 | 3次元等高線図 |
まとめ
2次元・3次元プロットを使いこなすことで、データの特徴を視覚的に理解しやすくなります。特に3次元プロットでは、数値が示す意味を直感的に把握できる場面が多いでしょう。MATLABの強力な可視化機能を上手に活用して、データ解析やプレゼンテーションに役立ててみてください。
- 2次元プロット: plot, subplot, scatter などを使ってさまざまな可視化が可能
- 3次元プロット: mesh, surf, plot3 などで多彩な立体表示を実現
- カラーマップや視点変更を駆使すると、より分かりやすいグラフを作れる
さらなる学習リソース
- MathWorks公式サイト (日本語)
- MATLABヘルプ「Creating 2-D Plots」(英語版: 2-D Plots)
- MATLABヘルプ「Creating 3-D Plots」(英語版: 3-D Plots)
キーワード再掲: 2次元プロット, 3次元プロット, MATLAB, plot, surf, mesh, 可視化