MATLABのplot機能の使い方・グラフの書き方まとめ

MATLAB

MATLABのplot機能は大変便利ですが、多機能なだけに初めて使うときに少し面食らうかもしれません。

このページでは、最低限知っておきたいplot関係の基本機能をまとめています。

モバイル端末の方へ
プログラムが画面からはみ出している場合は、横持ちするか、横スクロールしてご覧ください

スポンサーリンク

マウスでお手軽にplotする

ワークスペースの変数をちょっと確認したいときは、GUIのplot機能を使うと便利です。

まずデモ用に、適当にデータを作成しておきます。 ワークスペースにあるこれらのデータを、マウス操作でplotして確認してみましょう。

% x軸用データ
x_data = 0:100;
% y軸用データ(x軸データの各値に対応したデータを持つ)
y_data_1 = sqrt(x_data);
y_data_2 = 10*sin(x_data/10);
y_data_3 = 10*cos(x_data/20);
% それぞれのデータを縦向きに積み重ねたデータ
mat_data = [y_data_1; y_data_2; y_data_3];

確認したいデータが縦ベクトルか横ベクトルであれば、ワークスペースの該当データを選択し、「プロット」タブのplotボタンを押すだけでデータをグラフ化することができます。

確認したいデータが行列であれば、ワークスペースの該当データをダブルクリックし、変数ウィンドウから確認したい行(または列)を選択し、plotボタンを押せばOKです。

簡単ですね!

また、plotボタン右側のラジオボタンにて、plot時のウィンドウの取り扱いを設定できます。

  • Figureの再利用:最後に選択したfigureウィンドウに上書きplotする
  • 新規Figure  :新たにfigureウィンドウを生成してplotする

プログラムでじっくりplotする

基本プログラム

plotの基本プログラムは次の通りです。このプログラムを基本として、必要に応じて後述のコマンドを付け足していくと分かりやすいと思います。

1つのデータのみをplotする基本プログラム

figure; % グラフ用のウィンドウを生成
plot(x_data, y_data_1); % データplot
title('1つのデータのみをplot'); % グラフのタイトル
xlabel('x軸だよ'); % x軸の名前
ylabel('y軸だよ'); % y軸の名前
grid on; % グラフにグリッド線(目盛り)を表示
スポンサーリンク

複数のデータをplotする基本プログラム

figure; % グラフ用のウィンドウを生成
plot(x_data, y_data_1); % データplot
hold on; % 「以降、同じグラフに追加でplotするよ」と宣言
plot(x_data, y_data_2); % データplot
plot(x_data, y_data_3); % データplot
legend('データ1', 'データ2', 'データ3'); % 各データ名表示
title('複数のデータをplot'); % グラフのタイトル
xlabel('x軸だよ'); % x軸の名前
ylabel('y軸だよ'); % y軸の名前
grid on; % グラフにグリッド線(目盛り)を表示

次のようにplot関数中でデータ名を設定することもできます。

figure;
plot(x_data, y_data_1, 'DisplayName', 'データ1'); % plot関数内でデータ名を設定
hold on;
plot(x_data, y_data_2, 'DisplayName', 'データ2'); % plot関数内でデータ名を設定
plot(x_data, y_data_3, 'DisplayName', 'データ3'); % plot関数内でデータ名を設定
legend('show'); % 'show'と入れることで各データ名が表示される
title('複数のデータをplot');
xlabel('x軸だよ');
ylabel('y軸だよ');
grid on;

この方法だと、plot関数の記述が少し長くなりますが、次の通りメリットが多いので、個人的にはこちらのほうがオススメです。

  • データと名前が同じ行で紐づけされており、混乱しにくい
  • plotする順番を手間なく入れ替えられる(いちいちlegend関数で名前を再設定しなくてOK)
  • plot関数をコメントアウトして、手間なく特定のデータを非表示にできる(上と同じくlegend関数の再設定不要)

まあ結局好みでなので、ご自身の用途に合わせてチョイスしてください。以降のサンプルプログラムは、後者のスタイルで記述していきます。

デフォルトスタイルの設定

線の幅・フォント・グリッドは、どのグラフでも同じ設定で使用することがほとんどなので、デフォルト値を好みのものに変更しておくと便利です。とくにデフォルトでは文字サイズが少し小さめなので、大きくしておくと見やすくなります。

startup.mというファイルに下記コードを記述し、MATLAB起動時に開かれるフォルダ(デフォルトだとDocuments/MATLAB)に配置しておけば、MATLAB起動時にそれらが自動的に設定されます。

startup.m

% デフォルトの線の幅を設定
set(0,'DefaultLineLineWidth',1);

% デフォルトのフォント設定
fontsize = 12; % フォントサイズ
fontname = 'Helvetica'; % 使用フォント
set(0,'defaultAxesFontSize',fontsize);
set(0,'defaultTextFontSize',fontsize);
set(0,'defaultAxesFontName',fontname);
set(0,'defaultTextFontName', fontname);

% デフォルトでgrid on
set(0,'defaultAxesXGrid','on');
set(0,'defaultAxesYGrid','on');
set(0,'defaultAxesZGrid','on');
% デフォルトでマイナーグリッド(より細かいグリッド)もon
set(0,'defaultAxesXMinorGrid','on','defaultAxesXMinorGridMode','manual');
set(0,'defaultAxesYMinorGrid','on','defaultAxesYMinorGridMode','manual');
set(0,'defaultAxesZMinorGrid','on','defaultAxesZMinorGridMode','manual');

% デフォルトでbox on(グラフの外枠を実線表示)
set(0,'defaultAxesBox','on');

% ワークスペースを空にしておく
clear

適用後のグラフ

この設定により、プログラム内で “grid on” や “box on” をいちいち記述する必要がなくなり、より便利になります。さらに、前述のマウス操作でのplotでも見やすいグラフが生成できるようになります。

スポンサーリンク

線のスタイルを手軽に設定する

下記コードのように、plot関数に線の色・形を指定する文字列を与えることで、線のスタイルを手軽に変更することができます。

plot(x_data, y_data_1, 'r');  % 線の色を赤に変更
plot(x_data, y_data_1, ':');  % 線を点線に変更
plot(x_data, y_data_1, 'r:'); % 線を赤い点線に変更

色を表す文字は次の通りです。色の頭文字なのですぐ覚えられると思います。

文字覚え方
 k black
 r red
 b blue
 g green
 m マゼンタ
(ピンク)
magenta
 c シアン
(水色)
cyan

線を表す文字列は次の通りです。こちらも直感的ですね。

文字意味
– –破線
:点線
-.一点鎖線

これらを組み合わせてplot関数に与えることで、さまざまにスタイルを変えることができます。

設定例

figure;
plot(x_data, y_data_1, 'r', 'DisplayName', '''r''の場合'); % ’が多いのは仕様です
hold on;
plot(x_data, y_data_2, 'b--', 'DisplayName', '''b--''の場合');
plot(x_data, y_data_3, 'k:', 'DisplayName', '''k:''の場合');
legend('show');
title('様々なスタイルでplot');

※より詳細なオプションは、MathWorksのドキュメントに書かれています。

スポンサーリンク

表示範囲を変更する

プログラムにて描画範囲を設定したい場合は、次のコマンドをplot関数の後に記述します。

xlim([20 30]);   % x軸の範囲を20~30に設定
ylim([120 130]); % y軸の範囲を120~130に設定

また、figureウィンドウのズームボタンを使えば、マウスで直感的に表示範囲を変更できます。

  • ホイール回転で、マウスカーソル位置を中心に拡大/縮小
  • カーソルドラッグで、選択した範囲を拡大
  • ダブルクリックで、デフォルトの状態に戻す(便利)

対数グラフをplotする

plot関数の代わりにloglog関数・semilogx関数・semilogy関数を使用すると、対数グラフを作成することができます。

両対数グラフ

figure;
loglog(x_data, y_data_1, 'DisplayName', 'データ1'); % plotの代わりにloglogを使用
legend('show');
title('両対数グラフ');
xlabel('x軸だよ');
ylabel('y軸だよ');

片対数グラフ

figure;
semilogx(x_data, y_data_1, 'DisplayName', 'データ1'); % plotの代わりにsemilogxを使用
hold on; % holdも同様にできる
semilogx(x_data, y_data_2, 'DisplayName', 'データ2'); % plotの代わりにsemilogxを使用
semilogx(x_data, y_data_3, 'DisplayName', 'データ3'); % plotの代わりにsemilogxを使用
legend('show');
title('片対数グラフ(x軸)');
xlabel('x軸だよ');
ylabel('y軸だよ');

y軸を対数軸にする場合は、semilogxをsemilogyに変更すればOKです。

複数のグラフを並べてplotする

1つのfigureウィンドウ内に複数のグラフを作成したいときは、subplot関数を使用します。

figure;

subplot(2,1,1); % 「ウィンドウを1行2列に分割し、これから1番目にplotするよ」と宣言
plot(x_data, y_data_1, 'DisplayName', 'データ1');
hold on;
plot(x_data, y_data_2, 'DisplayName', 'データ2');
plot(x_data, y_data_3, 'DisplayName', 'データ3');
legend('show');
title('1番目');
xlabel('x軸だよ');
ylabel('y軸だよ');

subplot(2,1,2); % 「ウィンドウを1行2列に分割し、これから2番目にplotするよ」と宣言
semilogx(x_data, y_data_1, 'DisplayName', 'データ1');
hold on;
semilogx(x_data, y_data_2, 'DisplayName', 'データ2');
semilogx(x_data, y_data_3, 'DisplayName', 'データ3');
legend('show');
title('2番目');
xlabel('x軸だよ');
ylabel('y軸だよ');
スポンサーリンク

生成したグラフを便利に操作する

ウィンドウをまとめて閉じる

close all

このコマンドで、開いているfigureウィンドウをまとめて閉じることができます。プログラムの頭で使用することが多いですが、コマンドウィンドウからでも使用できるので、作業効率化にも重宝します。

wordやpowerpointできれいに表示する

作成したグラフをwordやpowerpointで使う際は、.emf形式でグラフを保存し、それを貼りつけるのがオススメです。グラフを拡大縮小しても線が荒くならず、きれいに表示させることができます。

ウィンドウを自動的に並べる

プログラムにて作成したfigureウィンドウはすべて同じ場所に生成されるため、グラフが増えてくるとそれをマウスで1つ1つ並べなおす必要があり、面倒です。

Gridfigureというアドオンを使用すると、それを自動化でき、大変便利です。Gridfigureは基本機能ではないので別記事にまとめていますが、興味がありましたら合わせてご参照ください。

コメント